1:winform应用程序是一种智能客户端技术,我们可以使用winform应用程序,帮助我们获得信息或者传输信息等。
2:属性
Name:在后台要获得前台的控件对象,需要使用Name属性。
Visible:指示一个控件是否可见。
Enabled:指示一个控件是否可用。
3:事件:发生一件事情
注册事件:双击控件注册的都是控件默认被选中的那个事件。
4:主窗体
在Main函数当中创建的窗体对象,我们称之为这个窗体应用程序的主窗体,也就意味着,当你将主窗体关闭后,整个应用程序都关闭了。
5:TextBox控件
WordWrap: 指示文本框是否换行。
PaswordChar: 让文本框显示一个单一的字符
ScollBars: 是否显示滚动条
事件:TextChanged 当文本框中的内容发生改变的时候出发这个事件。
6:跑马灯练习
string str="abcde";
str=str.Substring(1)+str.Substring(0,1)
7:Timer
在指定的时间间隔内做一件指定的事情。
8:单选和多选
checked: 指示这个控件是否处于选中状态。
默认情况下,在一个窗体中,所有的单选按钮只允许选中一个,可以使用groupbox进行分组。
9:MDI窗体的设计
1:首先确定一个父窗体。将IsMdiContainer设置为true
2:创建子窗体,并且设置他们的父窗体
------------------------------------------------------
1:Directory操作文件夹
CreateDirectory 创建文件夹
Delete 删除文件夹
Move 剪切文件夹
Exist 判断是否存在
GetFiles 获得指定的目录下所有文件的全路径
Directory.GetFiles(string path,string searchPattern); //searchPattern:要与path中的文件名匹配的搜索字符串
GetDirectory 获得指定目录下所有文件夹的全路径
2:WebBrowser浏览器控件
url
3:ComboBox下拉框控件
DropDownStyle:控制下拉框的外观样式
命名规则:cbl+...
4:点击更换图片
1):在程序加载的时候,将指定图片文件夹中所有的图片文件名读取到ListBox中
OpenFileDialog:打开对话框
SaveFileDialog:保存对话框
FontDialog:字体对话框
ColorDialog:颜色对话框
5:进程类
//using System.Threading.Tasks;
Process
item.Kill(); //杀掉进程
Process.Start("calc"); //通过进程打开一些应用程序
6:线程类
//跨线程操作:
Control.CheckForIllegalCrossThreadCalls //是否捕获对错误线程的调用
//Form_FormClosing //点击关闭窗体的时候,判断新线程是否为null
thread th=new thread();
th.Abort();
注意“方法重入”的问题:所谓的方法重入,是一个有关多线程编程的概念。程序中多个线程同时运行时,就可能发生同一个方法被多个线程同时调用的情况。
当这个方法中存在一些非线程安全的代码时,方法重入就会导致数据不一致的情况,这是非常严重的bug。
Object obj = new Object();
//开辟内存
//调用构造函数
//同步块索引(负数)
System.Threading.Monitor.Enter(obj);
try
{
DoSomething();
}
finally
{
System.Threading.Monitor.Exit(obj);
}
lock这段代码是怎么运行的.lock语句根本使用的就是Monitor.Enter和Monitor.Exit,也就是说lock(o)时执行Monitor.Enter(this),大括号结束时执行Monitor.Exit(this).
它的意义在于什么呢,对于任何一个对象来说,他在内存中的第一部分放置的是所有方法的地址,第二部分放着一个索引,他指向CLR中的SyncBlock Cache区域中的一个SyncBlock.什么意思呢?
就是说,当你执行Monitor.Enter(Object)时,如果object的索引值为负数,就从SyncBlock Cache中选区一个SyncBlock,将其地址放在object的索引中。
这样就完成了以object为标志的锁定,其他的线程想再次进行Monitor.Enter(object)操作,将获得object为正数的索引,然后就等待。
直到索引变为负数,即线程使用Monitor.Exit(object)将索引变为负数。
7:前台线程和后台线程
前台线程:只有所有的前台线程都关闭才能完成程序关闭。
后台线程:只要所有的前台线程结束,后台线程自动结束。
8:SoundPlayer //播放音乐类
//通过进行曲打开制定的文件
ProcessStartInfo psi=new ProcessStartInfo(@"path");
Process p=new Process();
p.StartInfo=psi;
p.Start();