上节课讲到,有完整功能版的接口和基本功能的接口。为啥会这样呢?这其实就是为了少写代码,用个循环解决输入的问题。你可以数字1的点击事件是输入1,就是每个按钮做一段程序。这当然没问题。
简化版的接口是根据按钮的Text值来判断执行哪个功能,程序原本20多块,可以省略成2块。这里说一下,建立项目和添加控件等基本动作不讲了。
实际编程,要多考虑将重复的过程用循环来简化编程。
第一步,建立操作类,Cacl,继承ICacl,显式实现接口。
第二步建立UI界面,就是那个winform操作界面。这个略。
第三步,写后台代码。
双击form添加一load事件。这个事件就是为了注册各个按钮的Click事件。
注意两点,一是除了Button还有TextBox,要判断一下,二是循环的选择。
代码:
private void Form1_Load(object sender, EventArgs e) { foreach (var item in Controls) { if (item.GetType() == typeof(Button)) { Button btn = item as Button; btn.Click += Btn_Click; } } }
private void Btn_Click(object sender, EventArgs e) { Button btn = (Button)sender; string key = btn.Text.Trim(); cacl.EnterString(key); }
后台代码新建一个Cacl对象,这个应该会吧?这个对象作为主窗口的成员,也是我们要操作的对象,是面向对象编程的精髓。
ICacl cacl = new Cacl();
然后是绑定操作。注界面上有两个TextBox,下面的只读。设置一下Name,分别为txtBoxCaclString和txtBoxResult。其实还有一个Label,指定名称为lbMemory。绑定代码如下:
把这些代码放到Load也行,放到构造函数初始化命令后面也行。textBoxResult.DataBindings.Add(new Binding("Text", cacl, "Result", true)); textBoxCaclList.DataBindings.Add(new Binding("Text", cacl, "CaclString", true, DataSourceUpdateMode.OnValidation)); lbmemory.DataBindings.Add(new Binding("Visible", cacl, "HaveMemory", false));
第二课结语。这一课其实说的是界面代码。这里写的代码还缺一句,就是那个“key"还没有使用。后面加一句:
cacl.EnterString(key);
程序就是模仿并稍一点改造win7 计算器基本型,功能也别无限放大。
学习编程这样的例子是最好的。
后面还有很多循环、数组、操作符重载,重写ToString,条件判断,这些都是平时编程的基本功。