<WinForm_1>初识WinForm编程】的更多相关文章

暑假花了一个多月自学了Win32 SDK编程,不敢说成为了高手,但是还是颇具收获——windows的消息机制(著名的消息循环).一切控件均是窗口…… 曾经有一位网友(和我一个专业的)向我吐槽:Win32 SDK都是那么老的"老古董"了,你怎么还学它呢,岂不是浪费时间? 其实当时我听到这句话,内心比较感慨,我没做什么回应——想必大家应该知道什么是经典,什么是根源——当你知其所以然时,必是你真正知其然之时 Ok,步入今天(也是未来一段时间的)的主题——初识一下WinForm 一.初识Win…
学习C#语言的朋友们肯定或多或少地接触到了WinForm编程,在C#语言的可视化IDE中(如VS.NET中)使用设计器可以让我们轻松地完成窗体.按钮.标签.图片框等等控件的组合,我们可以轻易地做出界面友好的WinForm应用程序.我们还可以通过WinForm程序中强大的事件处理机制来使我们的应用程序更加丰满. 当然,我们这次不谈窗体.不谈按钮…… 我们谈谈DataGridView(数据网格视图). 作为真正与用户进行信息交互的界面,很大程度上需要向用户完整地展示数据,而在WinForm相关的强大…
private void Form1_Load(object sender, EventArgs e) { Thread newthread = new Thread(new ThreadStart(BackgroundProcess)); newthread.Start(); } /// <summary> /// 定义一个代理 /// </summary> private delegate void CrossThreadOperationControl(); private…
Java基础-初识面向对象编程(Object-Oriented-Programming) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Java是一门面向对象的程序设计语言.那么什么是面向对象编程呢?本篇博客会带你了解到如何定义一个类,以及对自定义的类进行实例化操作.让我们一起目睹Java语言的编程风格吧. 一.类和对象的概念 1>.对象的概念 现实世界中客观存在的事物就是对象. 2>.类的概念 把一组对象相同的属性和相同的行为抽象出来就形成了类.类是对一组对象相同属性和相…
c# winform编程之多线程ui界面资源修改总结篇 单线程的winfom程序中,设置一个控件的值是很easy的事情,直接 this.TextBox1.value = "Hello World!";就搞定了,但是如果在一个新线程中这么做,比如: private void btnSet_Click(object sender, EventArgs e) {        Thread t = new Thread(new ParameterizedThreadStart(SetText…
递归 及 面向对象初识及编程思想   一.递归 1.定义: 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. (1)递归就是在过程或函数里调用自身: (2)在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口. 1 def age(n): 2 if n ==1: #条件判定 3 return 10 #返回一个结果 4 else: 5 return age(n-1)+2 #重复调用函数本身,系统会将运算的结果存放到栈,然后再依次的进行取值调用. 6 pr…
今天学习的可以分为两类吧,但是学习的都是比较抽象的,不太容易掌握吧.首先我们大部分时间学习了泛型,泛型的委托,泛型接口以及枚举器,迭代器,扩展方法:最后简单的认识了webform,实现了一个简单的功能. 一.泛型 定义:泛型(generic)可以让多个类型共享一组代码,泛型允许我们声明类型参数化.可以用不同的类型进行实例化,说白了,就是可以用类型占位符,创建具体类型致命的真实概念.C#中提供了五种泛型,类,结构,接口,委托和方法.下面举例说明可能更容易理解, class MyStack<T>…
单线程的winfom程序中,设置一个控件的值是很easy的事情,直接 this.TextBox1.value = "Hello World!";就搞定了,但是如果在一个新线程中这么做,比如: private void btnSet_Click(object sender, EventArgs e) {        Thread t = new Thread(new ParameterizedThreadStart(SetTextBoxValue));     //当然也可以用匿名委托…
1.shell编程之为什么学.怎么学 为什么学shell编程 Linux系统批量管理 提升工作效率,减少重复工作 学好shell编程所需要的基础知识 熟悉使用vim编辑器 熟悉SSH终端 熟练掌握Linux常用命令 熟练掌握Linux正则表达式及三剑客命令(grep.sed.awk) 如何学shell编程 阅读.模仿.阅读.模仿 核心:多练---->多思考---->再练---->再思考,坚持循环即可 大忌:不可拿来主义,可以模仿,但是要自己嚼烂了再吃下去 本阶段学习要求 看懂简单脚本 尝…
MPI是一个跨语言的通讯协议,用于并发编程.MPI标准定义了一组具有可移植性的编程接口. 安装环境 MPICH 是开源的消息传递接口(MPI)标准的实现. 下载地址 # 解压文件 tar -xzvf mpich-3.2.1.tar.gz cd mpich-3.2.1 # /usr/local/Cellar/mpich 改为你要安装 MPICH 的路径 ./configure –-prefix=/usr/local/Cellar/mpich |& tee c.log make |& tee…
我们选择文件可以用 OpenFileDialog ,但是文件夹有两种方法. 法一: 用C#的FolderNameEditor类的子类FolderBrowser类来实现获取浏览文件夹对话框的功能.下面来看看具体是怎么实现的.  首先新建一个winform的项目,再新建一个类文件(File->AddNewItem->Class). 因为FolderNameEditor是在System.Windows.Forms.Design命名空间下的,此命名空间位于动态链接库system.design.dll,…
一.递归 1.定义: 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. (1)递归就是在过程或函数里调用自身: (2)在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口. def age(n): if n ==1: #条件判定 return 10 #返回一个结果 else: return age(n-1)+2 #重复调用函数本身,系统会将运算的结果存放到栈,然后再依次的进行取值调用. print(age(5)) #打印结果 执行结果:18 2.优缺点…
---恢复内容开始--- 今天学习了win32的相关知识,首先win32是指是指可以在32位或以上Windows系统中运行的程序,我学习的主要利用c/c++语言编写的win32程序, 首先在win32中开始一个项目需要经历 1.窗口设计 2. 注册 3.创建 4.显示 五个部分,其中的难点就在于窗口设计中 lpfnWndProc 消息处理函数的编写,win32的精髓就在于它的消息机制, 在百度百科中关于消息机制是这样阐述的: -----------------------------------…
winform是Windows窗体应用程序 在窗体设计界面  单击鼠标右键--查看代码,即可转到Form1.cs的代码界面 从代码界面转到窗体设计界面的三种快捷方法:①双击解决方案资源管理器的 Form1.cs ②键盘 shfit+F7 ③在Form1.cs代码界面  右键单击--查看设计器     partial 指部分类,意思是Form1.cs 和 Form1.Designer.cs 是一个类,只是为了看着方便,将其分开写. using 后面是灰色的说明没有用到这个命名空间,vs2017中 …
写在前面 之前微信公众号里有一位叫sara的朋友建议我写一下Parallel的相关内容,因为手中商城的重构工作量较大,一时之间无法抽出时间.近日,这套系统已有阶段性成果,所以准备写一下Parallel的相关内容,正好也延续之前的C#并发编程系列. Parallel是并行编程的相关内容,而Parallel.For和Parallel.Foreach又是并行编程中相当重要的方法,所以不能孤立的去讨论Parallel,必须要放到并行编程的讨论中去. 并行化,一般是对所要完成的任务进行划分,并且以并发的方…
C#中事件.事件委托.事件的订阅 例子: using System.Timers; Timer t1 = new Timer(); t1.Tick += new EventHandler(XX); public static void xx() { } 事件是语言本身规定的,如TICK,事件委托类是系统规定的, 如new EventHandler(),我们要做的是事件发生后的代码,即XX函数中的代码,也就是事件的订阅 事件的订阅就是将委托的函数代码完善,事件发生后,执行委托的代码,当然委托的要求…
虽然没听的太懂, 不过还是写点东西吧. 我呢, 就跟着这本书写了个学生管理系统 前面刚会了SQLserver, 所以这个学生管理系统需要连上数据库, 毕竟学了不用天诛地灭 既然需要连接数据库, 就要用到SqlConnection对象, 最好提炼到一个类里面:DBHelper 多说无益, 上代码: class DBHelper { //数据库连接字符 private string constr = @"Data source=.;initial catalog=MySchool;uid=sab;p…
public void ResMsg()        {            while (isRecMsg)            {                //准备一个数组 准备接收 服务端发来的数据                byte[] msgRec = new byte[1024 * 1024 * 2];                //接收服务端发来的数据,此方法也会阻断当前线程,并返回接收的数据的长度                int recLength =…
1.清空DataGridView /// <summary> /// 清空DataGridView /// </summary> /// <param name="dg">DataGridView</param> public void ClearDataGridView(DataGridView dg) { try { if (dg == null || dg.DataSource == null) { return; } DataTa…
1.一直以为,MouseClick事件在鼠标点击时发生,MouseDoubleClick事件在鼠标双击时发生.那么在单击鼠标时会调用MouseClick事件处理程序,双击鼠标时会调用MouseDoubleClick事件处理程序.现在发现,在双击时会调用MouseClick事件一次,调用MouseDoubleClick事件一次.而不是只调用MouseDoubleClick事件一次,也不是会调用MouseClick事件两次.…
问题描述: 在VS中的窗体设计器中拖放一个ComboBox控件后想调整控件的大小.发现在控件上用鼠标只能拖动宽度(Width)无法拖动(Height). 解决过程: 1.控件无法拖动,就在属性窗口中设置Size属性.但是无法更新Height. 2.网上搜索发现,调整ComboBox等一些控件的大小时需要在Font属性中Size的大小才可以. 待解决问题: 为什么控件的大小需要通过调整字体的大小的属性才能更改呢?…
在做项目中,需要用到listview显示数据.同时,项目要求,通过检索用户输入的数据,程序通过搜索,确定数据所在的行并通过程序设定为选中状态并高亮显示.同时,正常响应鼠标单击响应的效果,单击时,程序设定的选中行清除选中状态.类似的效果如下: 以选中第4行为例,我的实现代码如下: //更改listView属性             this.listViewUser.GridLines = true;//显示表格线             this.listViewUser.View = Vie…
public string MyConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=ErLake.mdb"; /// <summary> /// 获取Excel文件 /// </summary> /// <param name="sender"></param> /// <param name="e"><…
第一部分:FlowLayoutPanel控件 实现效果: 将FlowLayoutPanel做为导航菜单按钮的容器 以实现 某个菜单按钮不显示时 整体的导航菜单布局不至于"缺憾" 原导航菜单为 button1 button2 button3 当button2不显示时 导航菜单自动变为 button1 button3 而不是 button1   空位 button2 如果以Panel做容器 则实现不了如上效果 再有 以FlowLayoutPanel为容器 默认内部的控件会"集&q…
概述 C#Winform编程中,跨线程直接更新UI控件的做法是不正确的,会时常出现“线程间操作无效: 从不是创建控件的线程访问它”的异常.处理跨线程更新Winform UI控件常用的方法有4种:1. 通过UI线程的SynchronizationContext的Post/Send方法更新:2. 通过UI控件的Invoke/BeginInvoke方法更新: 3. 通过BackgroundWorker取代Thread执行异步操作:4. 通过设置窗体属性,取消线程安全检查来避免"跨线程操作异常"…
出处:http://www.tuicool.com/articles/FNzURb 概述 C#Winform编程中,跨线程直接更新UI控件的做法是不正确的,会时常出现“线程间操作无效: 从不是创建控件的线程访问它”的异常.处理跨线程更新Winform UI控件常用的方法有4种: 1. 通过UI线程的SynchronizationContext的Post/Send方法更新: 2. 通过UI控件的Invoke/BegainInvoke方法更新: 3. 通过BackgroundWorker取代Thre…
概述 在之前写的一篇关于async和await的前世今生的文章之后,大家似乎在async和await提高网站处理能力方面还有一些疑问,博客园本身也做了不少的尝试.今天我们再来回答一下这个问题,同时我们会做一个async和await在WinForm中的尝试,并且对比在4.5之前的异步编程模式APM/EAP和async/await的区别,最后我们还会探讨在不同线程之间交互的问题. IIS存在着处理能力的问题,但是WinForm却是UI响应的问题,并且WinForm的UI线程至始至终都是同一个,所以两…
在WinForm编程时会遇到通过后台线程操作界面的情况,直接在后台线程执行的方法中直接操作控件会报错,这时候就要使用跨线程方式间接操作控件.下面是两种实现方式.   1.采用定义delegate的方式 private delegate void SetTextBoxValueDelegate(string value); private void SetTextBoxValue(string value) { if (this.txtInfo.InvokeRequired)//判断是否跨线程请求…
转自:http://www.cnblogs.com/jesse2013/p/Asynchronous-Programming-In-DotNet.html 概述 在之前写的一篇关于async和await的前世今生的文章之后,大家似乎在async和await提高网站处理能力方面还有一些疑问,博客园本身也做了不少的尝试.今天我们再来回答一下这个问题,同时我们会做一个async和await在WinForm中的尝试,并且对比在4.5之前的异步编程模式APM/EAP和async/await的区别,最后我们…
在winform编程中,有时候我们可能对窗体样式需要定义,不适用系统自带的样式,这样我们可以设置FormBorderStyle属性为None.但是设置了FormBorderStyle为None后,我们点击任务栏应用程序图标并不能实现程序的最小化的操作(使用系统自带样式是可以实现的).下面我将展示如何在FormBorderStyle为None的情况下,实现应用程序任务栏图标点击可实现最小化. 1.添加如下代码 [DllImport("user32.dll", EntryPoint = &…