首先创建一个简单的windous窗体应用程序,名为Form1
一,windows 窗体应用程序是由控件组成的,控件是可以重复使用的类或组件
MessageBoxButtons枚举值及其说明
成员名称 说明
MessageBoxButtons.AbortRetryIgore 消息框包含“终止”,“重试”,“忽略”按钮
MessageBoxButtons.OK 消息框包含“确定”按钮
MessageBoxButtons.OKCancel 消息框包含“确定”和“取消”按钮
MessageBoxButtons.RetryCancel 消息框包含“重试”和“取消”按钮
MessageBoxButtons.YesNo 消息框包含“是”或“否”按钮
MessageBoxButtons.YesNoCancel 消息框包含“是”,“否”,和“取消”按钮
DialogResult*枚举值及其说明
成员名称 说明
Abort : (对话框的返回值是Abort(通常从标题为“中止”按钮))
Cancel : ( 对话框的返回值是Cancel(通常从标题为“取消”的按钮发送))
Ignore:(对话框的返回值是Ignore(通常从标题为“忽略”的按钮发送))
No:(对话框的返回值是No(通常从标题为“否”的按钮发送))
None:(从对话框返回了Nothing,这表明有模式对话框继续执行)
OK:(对话框的返回值是OK(通常从标题为“确定”的按钮发送))
Retry:(对话框的返回值的Retry(通常从标题为“重试”的按钮发送))
Yes:(对话框的返回值是Yes(通常从标题为“是”的按钮发送))
有一个小例子:
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("你单击了button1");
}
运行结果:
例如,以下三个语句的结果如下:
MessageBox.Show("三个按钮","信息提示",MessageBoxButtons.AbortRetryIgnore);
MessageBox.Show("三个按钮","信息提示",MessageBoxButtons.YesNoCancel);
MessageBox.Show("两个按钮","信息提示",MessageBoxButtons.OKCancel);
二,Windows窗体应用程序的结构
从一个简单的窗体应用程序中可以找到一个Program.cs文件,它是主程序文件,双击该文件名可以看到其代码
namespace porj1
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}
其中有一个Program静态类,包含一个Main静态方法,这与控制台应用程序相似,所不用的是,通过Application.Run(new Form1())语句执行Form1窗体。这里Form1是启动窗体,如果要执行其他窗体如Form2,只需要将其中的“Form1”改为“Form2”即可。Application类是应用程序类
另外,每个窗体如Form1对应一个Form1.cs节点,展开它时还会看到Form1.Designer,cs和Form1.resx.前者为窗体设计文件,其代码是由Visual Studio自动生成的,一般不需要修改,后者为其资源文件
双击Form1.Designer.cs看到其代码,其中用于初始化Form1的代码如下
private void InitializeComponent()
{
this.button1 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// button1
//
this.button1.Location = new System.Drawing.Point(211, 104);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(187, 98);
this.button1.TabIndex = 0;
this.button1.Text = "button1";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Controls.Add(this.button1);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);
}
上述代码是由程序员的设计操作转换而来的,是由系统自动生成的,主要包含button1和Form1两部分。其中,this.button1.Click += new System.EvenHandler(this.button1_Click)语句将button1事件Click与对应的事件处理方法button_Click相关联,称为事件订阅,其一般格式为:
object.Event +=new EventHandle(Method);
其中,EventHandler是.NET Framework预置好的一个特殊的委托。它的形式是固定的。上述语句的意识是,如果对象object发生了Event事件,就交由方法Method来处理。一个对象可以委托多个不同的处理,“+=”用来增加新的委托关系。Method是真正进行事件处理的地方。正因为如此,在执行Form1中用户单击button1时才会执行button1_Click
三,常用的控件设计
控件:是包含在窗体上的对象,是构成用户界面的基本元素,也是c#可视化编程的重要工具。使用控件可以减少程序设计中大量重复性的工作。有效的提高设计效率。要快捷的编写出好的应用程序,必须掌握各种控件的功能,用于以及其常用的属性。
工具箱中包含建立应用程序的各种控件,根据控件的不同用途分为若干个选项卡,可根据用途单击相应的选项卡标签,将其展开,选择需要的控件。
控件的外观和行为,如控件的大小、颜色、位置以及控件使用方式等特征,是由它的属性决定的。不同的控件拥有不用的属性,并且系统为它提供的默认值也不同。大多数默认值设置比较合理,能满足一般情况下的需求。此外,每个控件还有它专门的属性,大多数控件还包含一些更高级的属性,在进入高级应用程序开发阶段会很有用。
- 控件共有的属性
(1)Name属性,可通过此名称来引用这个控件,c#会给每个新产生的控价指定一个默认名,一般由控件类型和序号组成
(2)Text属性,获取或设置文本的属性,
(3)尺寸大小(Size)和位置(Location),各种控件一般都有一个设置其尺寸大小和位置的属性,即Size和Location属性。Size属性可用于设置控件的宽度和高度。Location属性可用于设置一个控件相对于它所在窗体左上角的(x,y)坐标值。这两个属性既可以通过输入新的设置值来改变,也可以随着控件的缩放或拖动而改变。
(4)字体属性(Forn)如果一个控件要显示文字,可通过Forn属性来改变她的显示字体
设置控件字体的方法是,在“属性”窗口中单击Font属性,它的右边就会显示一个按钮,再单击这个按钮,就弹出一个“字体”对话框,通过“字体”对话框就可以选择所用的字体、字样和字号等。Font也是一个C#类,它的基本属性如下:
- Name:获取此Font的字体名称
- Size:获取此Font的大小,单位采用Unit属性指定的单位
- Unit:获取此Font的度量单位
- Bold:获取一个值,该值指示此Font是否为粗体
- Italic:获取一个值,该值指示此Font是否为斜体
- Strikeout:获取一个值,该值指示此Font是否指定贯穿字体的横线
- Underline:获取一个值,该值指示此Font是否有下划线
事实上,采用“字体”对话框就是设置上述属性
(5)颜色属性(BlackColor和ForeColor)
控件的背景颜色是由BlackColor属性设置的;控件要显示的文字或图形的颜色,则是由ForeColor属性设置的
(6)Cursor属性
Cursor属性主要功能是获取或设置当鼠标指针位于控件上时显示的光标,将Custor分配给控件的Curstor属性,以便更改在鼠标指针位于该控件上的显示的光标
(7)可见(Visible)和有效(Enabled)属性
一个控件的可见属性Visible确定了该控件在用户界面上是否可见。一个控件的有效属性Enabled决定了该控件能否被使用。当一个控件的Enabled属性设置为False,它变成灰色显示,单击这个控件时不会起作用。如果一个控件的Visual属性设置为False,则在用户界面上就看不到这个控件,它的Enable属性也就无关紧要。所以,设置的一般原则是控件总是可见的,但不必总是有效的。
窗体控件:
窗体(Form)控件是一个容器,其中可以放置其他控件,除了上述共有的属性外,窗体控件还有一些特定的属性
(1)StartPosition属性:获取或设置执行时窗体的起始位置。取值为Manual时表示窗体的位置由Location属性确定;取值为CenterScreen时表示窗体在当前显示窗口中居中,其尺寸在窗体大小中指定;取值为CenterPatent时表示窗体在其父窗体中居中,等等。
(2)MaximizeBox属性:获取或设置一个值,该值指示是否在窗体的标题栏中显示“最大化”按钮
(3)MinimizeBox属性:获取或设置一个值,该值指示是否在该窗体的标题栏中显示“最小化”按钮
(4)ControlBox属性:获取或设置一个值,该值指示在该窗体的标题栏中是否显示控件框
窗体控件的一些常用方法:
- Activate方法:激活窗体并给予它焦点
- Close方法:关闭窗体
- Focus方法:为控件设置输入焦点
- Hide方法:对用户隐藏控件
- Show方法:将窗体显示为五模式对话框。所谓无模式对话框就是在显示该窗体后用户可以不必响应,然后随意切换到其他窗体或程序进行操作。通常情况下,当建立新的窗体时,都默认设置为无模式窗体
- ShowDialog方法:将窗体显示为模式对话框。所谓模式对话框及时在屏幕上显示该窗体后用户必须响应,只有在它关闭之后才能操作其他窗体或程序
事件编程是Windows应用程序设计的基础,在窗体控件上预设了很多事件,当用户设置了某些事件处理方法时,系统会自动捕获事件并执行相应的事件处理方法。当一个窗体启动时,常见窗体事件的处理次序如下:
(1)本窗体上的Load事件
(2)本窗体上的Activated事件
(3)本窗体上的其他Form级事件
(4)本窗体上包含控件的相关事件
一个窗体被卸载时,常见的窗体事件的处理次序如下:
(1)本窗体上的Closing事件
(2)本窗体上的FormClosing事件
(3)本窗体上的Closed事件
(4)本窗体上的FormClosed事件