创建项目
在我们使用C#开发应用程序时,一般细化步骤包括创建项目、设计界面、设计属性、编写程序代码、保存项目、运行程序等6个步骤。
选择“Windows窗体应用程序”,输入项目名称,选择保存路径,单击“确定”按钮,即可创建一个Windows窗体应用程序,创建完成窗体应用程序。
设计界面
创建完项目后,在设计界面中会有一个默认的窗体,可以通过工具箱向其中添加各种控件来设计窗体界面。这个只需要用鼠标指针选中工具箱中要添加的控件,然后拖进设计窗体中就好了,像如下效果,下面Form1窗体中已经添加了两个label(标签)控件,两个button(按钮)控件,两个TextBox(文本框)控件。
设置属性
在窗体中选择指定控件,在“属性”窗口中对控件的相应属性进行设置,包括指定控件的名字、样式、大小、属性等。
编写代码
通过双击对应控件,进入代码编辑器,软件会自动触发button控件的click,就可以在该事件中编辑代码,例如下面这段:
Private void button_1_click(object sender,EventArgs e) { } Private void button_1_click(object sender,EventArgs e) { } |
如上操作就是基本的创建窗体操作,通过以上操作可以完整的创建一个Windows窗体应用。
前面我们认识了关于委托的用法,而在本次学习中,我们将会了解到,通过委托传递数据。例如,如果A窗体调用B窗体,在B窗体实例化的时候,将参数通过构造函数的方式穿进去,当A窗体执行某事触发主题时,A会先将数据传到服务端,接着服务器转发到B窗体。具体实现方法如下:
创建一个Windows窗体应用程序项目from1,然后添加另一个from2窗体。
在两个窗体中各添加一个文本框TextBox和按钮button。
单击from1中的button1,弹出from2,然后要在from1中的TextBox1和from2中传值。
将from1称作父窗体,将from2称作子窗体。
相对来说,将父窗体的值传到子窗体较为容易实现。
如下面例子
通过外部可访问的中间变量传参
在from1中:
using System; using System.Windows.*; namespace WindowsFroms { public partial class From1 : From { public From1() { InitializeComponent(); } private void button1c(object sender, EventArgs e) { From2 from2 = new From2(); from.num = textBox1.Text; from2.ShowDialog(); } } } |
在from2中:
using System; using System.Windows.*; namespace WindowsFroms { public partial class From2 : From { public From2() { InitializeComponent(); } public string num; private void From2_Load(object sender, EventArgs e) { textBox2.Text = num; } } } |
子窗体传值给父窗体
在form1中:
using System; using System.Windows.*; namespace WindowsForms { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1c(object sender, EventArgs e) { Form2 form2 = new Form2(); form2.ChangeText = (num) => textBox1.Text = num; form2.ShowDialog(); } } } |
在form2中:
using System; using System.Windows.*; namespace WindowsForms { public partial class Form2 : Form { public Form2() { InitializeComponent(); } public Action<string> ChangeText; private void button2c(object sender, EventArgs e) { if (ChangeText != null) { ChangeText(textBox2.Text); this.Close(); } } } } |