.Net学习日记——WinForm基础
----------------------Windows Phone 7手机开发、Net培训、期待与您交流! ----------------------
今天对WinForm基础进行了复习,虽然操作流程简单,但我关注了编程中一些需要注意的细节,对于一个问题的多种实现方法进行了思考。
一、WinForm基本概念
Windows窗体也称为Windows Form,用于创建应用程序的用户界面,并使用任何一种.Net平台支持的语言编写应用程序的功能。由于窗体中很多元素具有相似性,.Net将这些元素的相似之处抽象为类,这些类称为控件。WinForm程序与控制台程序的不同在于,控件的方法不是程序员显式调用的,而是程序员将方法预先写好并进行指定,而后由.Net在事件被触发时调用,即WinForm程序是事件驱动的,这种机制也被称作好莱坞原则。
二、WinForm控件命名
由于Windows窗体通常由很多控件组合而成,需要为这些控件根据规范进行适当的命名,提高程序的可读性,避免在编写源代码时发生混淆。
控件类型 | 控件类型简写 | 标准命名举例 |
Label | lbl | lblMessage |
LinkLabel | llbl | llblToday |
Button | btn | btnSave |
TextBox | txt | txtName |
MainMenu | mmnu | mmnuFile |
CheckBox | chk | chkStock |
RadioButton | rbtn | rbtnSelected |
GroupBox | gbx | gbxMain |
PictureBox | pic | picImage |
Panel | pnl | pnlBody |
DataGrid | dgrd | dgrdView |
ListBox | lst | lstProducts |
CheckedListBox | clst | clstChecked |
ComboBox | cbo | cboMenu |
ListView | lvw | lvwBrowser |
TreeView | tvw | tvwType |
TabControl | tctl | tctlSelected |
DateTimePicker | dtp | dtpStartDate |
HscrollBar | hsb | hsbImage |
VscrollBar | vsb | vsbImage |
Timer | tmr | tmrCount |
ImageList | ilst | ilstImage |
ToolBar | tlb | tlbManage |
StatusBar | stb | stbFootPrint |
OpenFileDialog | odlg | odlgFile |
SaveFileDialog | sdlg | sdlgSave |
FolderBrowserDialog | fbdlg | fbdlgBrowser |
FontDialog | fdlg | fdlgFont |
ColorDialog | cdlg | cdlgColor |
PrintDialog | pdlg | pdlgPrint |
三、相关问题
在通过分析身份证号码判断用户访问权限的案例中,根据现存两种身份证号码的位数不同,我采用了如下代码。由于本案例只需要通过用户的出生年份计算用户的年龄,在此不对身份证号码的正确性判断进行深入探究。
//15位身份证号码
if (input.Length == 15)
{
if (int.TryParse(input.Substring(6, 2), out year) == false)
{
MessageBox.Show("身份证号码输入错误,请检查您的输入后重试!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
txt_ID.Text = null; //清空文本框
return;
}
if (year >= 0 && year <= 11)
year += 2000;
else
year += 1900;
}
//18位身份证号码
else if (input.Length == 18)
{
if (int.TryParse(input.Substring(6, 4), out year) == false)
{
MessageBox.Show("身份证号码输入错误,请检查您的输入后重试!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
txt_ID.Text = null; //清空文本框
return;
}
}
else
{
MessageBox.Show("身份证号码输入错误,请检查您的输入后重试!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
txt_ID.Text = null; //清空文本框
return;
} 四、需注意的问题
1、在直接对控件的事件处理代码进行删除后,再次运行程序会提示错误。正确的删除方法是,先在控件的事件列表中将对应事件的指向清空,而后再对该控件的事件处理代码进行删除;
2、注意return语句的作用是退出函数,而非退出整个程序。在检测到用户输入的非法值后,必须加入return语句,否则程序将继续执行下去,并产生意外结果;
3、对于TextBox控件,为防止附加文本的篇幅过长,导致中间变量过大、程序运行效率降低,通常在附加文本时不通过简单的字符串相加来实现,而是直接调用TextBox控件的appendText方法;
4、必须注意变量的作用域问题。对于局部变量,每次运行完毕,其值都会被销毁,下次运行时将重新初始化;而对于类的字段,只要类的实例不销毁,就会一直保持对象的字段值;
5、对于ComboBox控件,需要区分以下四个属性的含义:SelectedIndex表示当前选中项在下拉列表中的序号,SelectedItem表示当前选中项包含的内容,SelectedValue和SelectedText则主要在数据库开发中使用;
6、在实际的登录界面开发过程中,通常不对用户输入的用户名和密码区分大小写,因此在对用户输入的字符串与正确的字符串进行比对时,需要调用String类Equals方法的重载函数public bool Equals(stringvalue, StringComparison comparisonType),并将comparisonType参数赋值为StringComparison的枚举值OrdinalIgnoreCase。
----------------------Windows Phone 7手机开发、Net培训、期待与您交流! ----------------------
详细请查看:http://net.itheima.com/