C#界面设计

常用的窗口控件属性如下:

Name属性:每一个控件都有一个Name(名字)属性,在应用程序中,可通过此属性来引用这个控件。C#会给每个新添加的控件指定一个默认名。在应用程序设计中,可根据需要将控件的默认名字改成更有实际代表意义的名字。自己的理解:Name就相当于MFCID

Anchor属性: Anchor的意思是“锚”,那么Anchor属性是用来确定此控件与其容器控件的固定关系的。当父控件的位置、大小变化时,子控件按照什么样的原则改变其位置、大小。Anchor属性就用于设置此原则。

常用的窗口控件

1、文本框控件:

常用的方法:

1Clear方法:用于清除文本框中已有的文本。

2AppendText方法:用于文本框最后追加文本。

窗体方法

1、public bool IsDisposed { get; }

获取一个值,该值指示控件是否已经被释放。如果控件已经被释放,则为 true;否则为 false。

2、窗体的InitializeComponent()函数为控件的一些初始化工作

BackgroundWorker的使用

简介:

1DoWork事件是在后台线程中运行的,所以在该事件中不能够操作用户界面的内容,如果需要更新用户界面,可以使用ProgressChanged事件及RunWorkCompleted事件来实现。对于需要长时间操作而不需要用户长时间等待的情况可以使用这个类。

2BackgroundWorker在内部封装了线程.所以你创建了一个BackgroundWorker,就相当于创建一个线程,并且提供一个方法作为任务由它去执行而且从名字上看很明显,它是一个后台任务,一定要在单独的线程上运行的.

3当你执行的任务较简单,不需要复杂控制时使用BackgroundWorker,较为方便;当你要执行的任务需要复杂控制(如线程同步),要自己 创建线程.

4BackgroundWorker就是一个高级控件,方便使用Thread,后者是前者的灵魂或基础直接使用后者难度稍大,但换来的是灵活方便

 

BackgroundWorker类中主要用到的有如下属性、方法事件

重要事件:

1、DoWork——void DoWork(object sender, DoWorkEventArgs e),第二个参数e有三个属性,Argument,CancelResult

1.当执行BackgroundWorker.RunWorkerAsync方法时会触发DoWork事件如果你调用的是有参类型的RunWorkerAsync,DoWork事件处理程序的第二个参数eArgment属性将会返回一个指向你传递过来的这个参数。如果后台操作已在运行,再次调用 RunWorkerAsync 将引发 InvalidOperationException异常

2.在处理DoWork事件的函数中检测BackgroundWorker.CancellationPending属性是否为true如果检测到true,则表示用户已经取消了异步调用,此时编程者需DoWorkEventArgs.Cancel属性设为true(传递给处理DoWork事件的函数的第二个参数),这样当退出异步调用的时候,可以让处理RunWorkerCompleted事件的函数知道是正常退出还是中途退出。

3.DoWork事件结束之前,将后台线程产生的结果数据赋给DoWorkEventArgs.ResultRunWorkerCompleted事件中调用RunWorkerCompletedEventArgs.Result属性取得后台线程产生的结果。

4.通过BackgroundWorker.ReportProgress(int)方法触发下面的ProgressChanged事件,并且传递ProgressChangedEventArgs,其中包含了处理的百分比,这个参数在UI界面上设置progressbar控件。

 2ProgressChanged——操作处理中获得的处理状态变化,调用 ReportProgress 时发生.

 void UpdateProgress(object sender, ProgressChangedEventArgs e)

3RunWorkerCompleted——异步操作完成或中途终止会触发该事件。当后台操作完成以后,无论是completed 还是cancelled,则RunWorkerCompleted 事件被触发,通过此方法可以将后台操作的完成结果反馈给用户

 void CompletedWork(object sender, RunWorkerCompletedEventArgs e)

重要属性(通过MyBackgroundWorker调用查看)

1CancellationPending     获取一个值,指示应用程序是否已请求取消后台操作。通过在DoWork事件中判断CancellationPending属性可以认定是否需要取消后台操作(也就是结束线程);

 2 IsBusy   获取一个值,指示 BackgroundWorker 是否正在运行异步操作。程序中使用IsBusy属性用来确定后台操作是否正在使用中;

3WorkerReportsProgress   获取或设置一个值,该值指示BackgroundWorker能否报告进度更新
4WorkerSupportsCancellation     获取或设置一个值,该值指示 BackgroundWorker 是否支持异步取消。设置WorkerSupportsCancellationtrue使得程序可以调用CancelAsync方法提交终止挂起的后台操作的请求;
重要方法(通过MyBackgroundWorker调用)
1RunWorkerAsync() //有两个重载       开始执行后台操作

2CancelAsync()                        请求取消挂起的后台操作

3ReportProgress()//有两个重载         引发ProgressChanged事件  

注意:如果需要提前终止执行后台操作,可以调用BackgroundWorker.CancelAsync方法。
综上:

1、我们只需调用MyBackgroundWorker.RunWorkerAsync()就可以程序就会执行Dowork事件,若Dowork事件中调用了MyBackgroundWorker.ReportProgress()函数,则上面的ProgressChanged事件就会执行,而RunWorkerCompleted是在完成后台进程后程序一定会自动执行的。

2C#TreadBackgroundWorker、事件其实都是开出新的线程来做某件事,所以当系统相应某件事(或某个控件时)可以同时去相应其他事件而不会出现卡顿的现象,所以在平时的编程中要注意对于耗时的操作需要在新开的线程中做。(主线程如何让子线程获得时间片段)

 

注意事项

1、若用户需要在窗体装载计算机内存时执行某些操作和数据处理功能,应将程序写在窗体的Form_Load()事件中。

2、想让某个窗口加载时执行某些初始化操作只需在窗口界面双击即可添加事件处理程序。

private void Form1_Load(object sender, EventArgs e),或直接在属性的行为栏添加。

 

 注:由于笔者水平有限,若博文中存在错误或不周之处,还望各位多多指教,有新的经验的时候也会及时更新本博文。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐