第02篇:C#星夜拾遗之Windows窗体
尽管人们一直说高手都用编写控制台程序,尽管企业都在使用基于Web的应用程序,但我这里依然选择了从Windows窗体入门。原因很简单,我喜欢WinForm应用程序完美的可视化界面。
创建Windows窗体应用程序
根据上一篇中的WinForm版 Hello World的方法,创建一个名为SampleWinFormApp的Windows应用程序。这是最简单、明了的创建方式。也有一些高人通过Nodepad创建,并通过命令行编译执行的,这里不做说明,因为笔者没有那样做过。
在Form1的编辑窗口中,你可以拖拉工具箱中的项到窗口中,在公共控件栏目中的项为总常用的。你可以随意拖几个控件看看运行的效果,实践是检验真理的唯一方法,也是走向编程大门的不二法门。
说说Program.cs
双击打开Program.cs文件,会看到这个文件里面就一个Main方法,学习过C语言的都应该知道,Main方法就是程序的入口,这也不例外。Main方法中有三行代码,前两行貌似是设置窗口样式什么的,不做说明。第三行的用处在于设置运行时的窗口。这里是Form1,如果你的程序中有一个Form2,并且你希望程序运行后进入的界面是Form2,就可以将这里的Form1改为Form2即可。
另外,在Main方法中还可以加入一些系统初始化的内容,例如在这里初始化数据库连接对象、检验程序是否注册等。
说说Control类
Control类是每个控件和窗体的基类,它的核心功能是创建用户所见的界面。
Control类实现向用户显示信息的类所需的最基本功能。它处理用户通过键盘和指针设备所进行的输入。它还处理消息路由和安全。虽然它并不实现绘制,但是它定义控件的边界(其位置和大小)。它提供窗口句柄 (hWnd)……总之,这个Control类可谓功能强大。感兴趣的朋友可以参考MSDN,这里不多赘言。
窗口之间的参数传递(示例下载:SampleWinFormApp.rar)
既然要传递参数,自然要新建第二个窗口,右键项目>添加>Windows窗体,如下图:
在添加完成后,将Form1和Form2设计下图:
相信你已经明白这个示例要做的事情了吧,没错,就是对Form1中的名称进行重命名操作。操作流程为:点击“重命名”按钮,打开Form2,在Form2中显示并可修改Form1中的名称,修改完成后点击“确定”按钮,Form1中的名称也会更新。
首先,为窗口中的按钮添加单击事件,可以通过双击按钮本身,也可以在事件列表窗口中找到,并添加。这里的所有名称都采用默认值。
然后就是编程了。这里给出Form1 和Form2 的全部代码:
{
public Form1()
{
InitializeComponent();
this.textBox1.ReadOnly = true; // 设置TextBox1只读
}
private void button1_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2(this.textBox1.Text);
// 判断是否点击确定按钮
if (form2.ShowDialog() == DialogResult.OK)
this.textBox1.Text = form2.GetNewName();
}
}
{
public Form2(string oldName)
{
InitializeComponent();
this.textBox1.Text = oldName;
}
public string GetNewName()
{
return this.textBox1.Text;
}
private void button1_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.OK;
this.Close();
}
}
结束语
记得在刚学习C#窗体应用程序时,在参数传递这一部分浪费了很多时间,最后还是请教老师才搞明白的。其实这里是类的调用,没有面向对象编程基础的朋友可能不理解,在后面的章节中会进一步说明。