C#Windows编程入门三部曲
第一步 创建一个表单
1.认识Form 类: 表示组成应用程序的用户界面的窗口或对话框。
这非常简单,只需要创建一个从 System.Windows.Form 类中衍生出来的类,并对适当的属性进行初始化就可以。在我们的例子中,类定义是这样开始的:
public class MyAdd : System.Windows.Form
{
. . .
}
【请在MSDN中找到Form类:MSDN->目录->.NET开发-> .NET Framework SDK-> .NET Framework-> .NET Framework类库-System.Windows.Forms命名空间】
请查找并回答:
1) 哪个属性表示窗体的高度,它的值是什么类型?
2) 哪个属性表示窗体的宽度,它的值是什么类型?
3) 哪个属性表示窗体标题栏显示的文本,它的值是什么类型?
4) 哪个属性表示窗体是否显示最大化按钮,它的值是什么类型?
5) 哪个属性可以改变窗体的透明度,它的值是什么类型?
6) 哪个属性可以改变窗体的背景颜色,它的值是什么类型?
7) 哪个属性可以代表 下面我们来看我们要解决的问题,以下是我们希望的主窗口:
我们希望表单具备如下特征:
- 窗口大小为 360乘 180象素
- 不给用户改变窗口大小的能力
- 标题栏中显示的标题是 我的加法计算器
- 初始状态下表单显示在屏幕的中心
- 不想要帮助按钮(应用程序太简单,不需要帮助按钮)
- 不给用户提供将应用程序最大化的能力
(因为在给定的窗口尺寸内,一切都是可视的,因此不需要最大化)
将表单初始化成给定的规格涉及到对MyAdd对象的某些属性进行设置。有些属性有改变值的方法,而其它属性则要通过更新适当的实例变量来直接修改。下面是有关代码。如果想要得到关于Form类的属性和方法的更多信息,那么 .NET Framework SDK 所提供的文档可以算是一个很好的参考资料。
//以下代码指令设置窗体的属性
this.Size = new Size(360, 180);
this.FormBorderStyle = FormBorderStyle.FixedDialog;
this.Text = "我的加法计算器";
this.StartPosition = FormStartPosition.CenterScreen;
this.HelpButton = false;
this.MaximizeBox = false;
this.Opacity = 0.95;
现在把这些代码放在一起进行编译和运行,看看表单运行后是什么样子。这里要使用类定义,创建一个构造器(其中要包含以上的代码来初始化主窗口的外观),并且要创建一个主方法来创建类的一个例示。以下是完成这一工作的代码:
using System;
using System.Windows.Forms;
using System.Drawing;
namespace 项目1
{
class MyAdd : System.Windows.Forms.Form
{
public MyAdd ()
{
//以下代码指令设置窗体的属性
this.Size = new Size(360, 180);
this.FormBorderStyle = FormBorderStyle.FixedDialog;
this.Text = "我的加法计算器";
this.StartPosition = FormStartPosition.CenterScreen;
this.HelpButton = false;
this.MaximizeBox = false; this.Opacity = 0.95;
}
}
}
需要Main()函数才能使之运行,并添加代码:
namespace 项目1
{
class Program
{
static void Main()
{
System.Windows.Forms.Application.Run(new MyAdd ());
}
}
}
第二步 向表单中增加控件
接着的一步是向表单中增加控件。我们为每个控件创建一个实例变量,对这些新实例变量进行初始化,最后把每个控件都放在表单中。这里是增加了控件之后表单的样子,以及更新过的代码:
class MyAdd : System.Windows.Forms.Form
{
TextBox textbox1 = new TextBox();
TextBox textbox2 = new TextBox();
Label labelAdd = new Label();
Button button = new Button();
public MyAdd()
{
//以下代码指令设置窗体的属性
this.Size = new Size(360, 180);
this.FormBorderStyle = FormBorderStyle.FixedDialog;
this.Text = "我的加法计算器";
this.StartPosition = FormStartPosition.CenterScreen;
this.HelpButton = false;
this.MaximizeBox = false;
this.Opacity = 0.95;
//以下代码设置子控件的属性
textbox1.Location = new Point(50, 50);
textbox1.Size = new Size(80, 20);
labelAdd.Text = "+";
labelAdd.Location = new Point(135,50);
labelAdd.Size = new Size(20,20);
textbox2.Location = new Point(160, 50);
textbox2.Size = new Size(80, 20);
button.Location = new Point(245,50);
button.Size = new Size(100,50);
button.Text = "计算";
this.Controls.Add(textbox1);
this.Controls.Add(labelAdd);
this.Controls.Add(textbox2);
this.Controls.Add(button);
}
以上代码首先创建两个文本框(TextBox)、一个标签(Label)和一个按钮(Button),然后对每个控件进行初始化并将其加入表单中。具体的含义如下:
- 控件的text 属性表示显示在其上的文字信息
- this.Controls.Add() 表示在表单上放置一个控件,要快速地添加每个控件,可以这么书写:
this.Controls = new Control[] { textbox1, labelAdd, textbox2, button }
第三步 增加响应用户事件代码
【事件:向其他类或对象通知发生的相关事情,通常用于通知用户操作,例如,图形用户界面中的按钮单击或菜单选择操作。
事件处理程序是处理事件的方法。当引发事件时,执行事件处理程序内的代码。每个事件处理程序提供两个使您得以正确处理事件的参数。下面的示例演示 Button 控件的 Click 事件的事件处理程序。
private void button1_Click(object sender, System.EventArgs e)
{
处理事件的代码
}
第一个参数 sender 提供对引发事件的对象的引用。上面示例中的第二个参数 e 传递特定于要处理的事件的对象。通过引用对象的属性(有时引用其方法)可获得一些信息,如鼠标事件中鼠标的位置或拖放事件中传输的数据。 】
还有最后一步就可以大功告成了,就是增加一个方法来捕捉按钮点击事件。
private void bnFtoC_Click(Object sender, EventArgs e)
{
try
{
float a = float.Parse(textbox1.Text);
float b = float.Parse(textbox2.Text);
float sum = a + b;
MessageBox.Show("结果是:" + sum);
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
textbox1.Clear();
textbox2.Clear();
textbox1.Focus();
}
}
接着,我们需要将适当的点击事件捕捉方法与按钮的 Click事件联系起来。要完成这一步,我们将以下放在类的构造器中:
button.Click += new EventHandler(bnFtoC_Click);
最后,请看完整的代码:
using System;
using System.Windows.Forms;
using System.Drawing;
namespace 项目1
{
class MyAdd : System.Windows.Forms.Form
{
TextBox textbox1 = new TextBox();
TextBox textbox2 = new TextBox();
Label labelAdd = new Label();
Button button = new Button();
public MyAdd()
{
//以下代码指令设置窗体的属性
this.Size = new Size(360, 180);
this.FormBorderStyle = FormBorderStyle.FixedDialog;
this.Text = "我的加法计算器";
this.StartPosition = FormStartPosition.CenterScreen;
this.HelpButton = false;
this.MaximizeBox = false;
this.Opacity = 0.95;
//以下代码设置子控件的属性
textbox1.Location = new Point(50, 50);
textbox1.Size = new Size(80, 20);
labelAdd.Text = "+";
labelAdd.Location = new Point(135,50);
labelAdd.Size = new Size(20,20);
textbox2.Location = new Point(160, 50);
textbox2.Size = new Size(80, 20);
button.Location = new Point(245,50);
button.Size = new Size(100,50);
button.Text = "计算";
button.Click += new EventHandler(bnFtoC_Click);
this.Controls.Add(textbox1);
this.Controls.Add(labelAdd);
this.Controls.Add(textbox2);
this.Controls.Add(button);
}
private void bnFtoC_Click(Object sender, EventArgs e)
{
try
{
float a = float.Parse(textbox1.Text);
float b = float.Parse(textbox2.Text);
float sum = a + b;
MessageBox.Show("结果是:" + sum);
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
textbox1.Clear();
textbox2.Clear();
textbox1.Focus();
}
}
}
}
namespace 项目1
{
class Program
{
static void Main()
{
System.Windows.Forms.Application.Run(new MyAdd());
}
}
}
结语: 到此为止,看到了如何用C#进行编程的一个完整过程。这个例子虽然很简单,但是麻雀虽小,五脏俱全,理解其中的原理后就能充分发挥C#的强大功能了。