Winform 基础

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();

原文地址:https://www.cnblogs.com/DrHao/p/5130061.html