目录C#控件前缀名大全 (1)2.Windows窗体设计概念及原则 (7)C#控件前缀名大全标准控件1 btn Button2 chk CheckBox3 ckl CheckedListBox4 cmb ComboBox5 dtp DateTimePicker6 lbl Label7 llb LinkLabel8 lst ListBox9 lvw ListView10 mtx MaskedTextBox11 cdr MonthCalendar12 icn NotifyIcon13 nud NumeircUpDown14 pic PictureBox15 prg ProgressBar16 rdo RadioButton17 rtx RichTextBox18 txt TextBox19 tip ToolTip20 tvw TreeView21 wbs WebBrowser容器控件1 flp FlowLayoutPanel2 grp GroupBox3 pnl Panel4 spl SplitContainer5 tab TabControl6 tlp TableLayoutPanel 菜单和工具栏1 cms ContextMenuStrip2 mns MenuStrip3 ssr StatusStrip4 tsr ToolStrip5 tsc ToolStripContainer6 cmu ContextMenu数据1 dts DataSet2 dgv DataGridView3 bds BindingSource4 bdn BindingNavigator5 rpv ReportViewer对话框1 cld ColorDialog2 fbd FolderBrowserDialog3 fnd FontDialog4 ofd OpenFileDialog5 sfd SaveFileDialog组件1 bgw BackgroundWorker2 dre DirectoryEntry3 drs DirectorySearcher4 err ErrorProvider5 evl EventLog6 fsw FileSystemWatcher7 hlp HelpProvider8 img ImageList9 msq MessageQueue10 pfc PerformanceCounter11 prc Process12 spt SerialPort13 scl ServiceController14 tmr Timer印刷1 psd PageSetupDialog2 prd PrintDialog3 pdc PrintDocument4 prv PrintPreviewControl5 ppd PrintPreviewDialog水晶报表1 crv CrystalReportViewer2 rpd ReportDocument其他1 dud DomainUpDown2 hsc HScrollBar3 prg PropertyGrid4 spl Splitter5 trb TrackBar6 vsc VScrollBar按字母AAdRotator----arBButton----btnCCalender----calCheckBox----chkCheckBoxList----chklst Column (DataGridView的)-col ColumnHeader (ListView 的) chCombobox----cbo CompareValidator----cv CrystalReportViewer---rptvew ContextMenu---cmuDDataGrid----dgDataGridView----dgvDataList----dlDomainUpDown----dud DropDownList----ddlFFileUpload -------------- ful Form ---------------------frmGGridView -------------- gv GroupBox -------------- grpHHiddenField --------------hfIImage -------------- img ImageButton --------------imgbtn ImageList -------------- ilLLabel -------------- lblLinkButton -------------- lnkbtn ListBox --------------lstListView -------------- lvMMenuStrip -------------- msOObjectDataSource -------------odsPPagedDataSource ------------- pds Panel -------------- pnlPictureBox ------------- picRRadioButton --------------rdo RadioButtonList ------------- rdolst RangeValidator ------------- rv RegularExpressionValidator rev Repeater -------------- rpt RequiredFieldValidator- rfvSStatusLabel--------------slbl StatusStrip --------------ssTTabControl -------------- tabTable -------------- tblTabPage --------------tpTextBox --------------txtTimer -------------- tmrToolStrip -------------- tsToolStripButton ------------- tsbtnToolStripDropDownButton-tsddbToolStripLabel ------------- tslblToolStripMenuItem- tsmiTreeView -------------- tv/tvwVValidatorSummary -------------vsWWebBrowser-------------- wb2.Windows窗体设计概念及原则本节介绍一下Windows窗体设计中的一些概念和原则。
控件的名称当开发人员在窗体中新增一个控件时,系统会给这个控件设置默认名称,比如对于Label控件,其默认名称可能为lable1、label2等,对于TextBox控件其默认名称可能为textBox1、textBox2等等。
如下图所示,笔者设计了一个“用户信息”窗体,在默认情况下,各个控件的名称如下图所示。
这是一种非常糟糕的窗体设计结果。
在编写该窗体的C#代码时,由于无法同时看到窗体设计界面,因此很难记下各种控件的名称及其功能。
当窗体控件比较多时,此时的程序代码的编写和维护时相当困难的。
[袁永福版权所有] 因此开发人员应当养成在窗体上新建控件就立即修改控件名称的习惯。
这样能有效的改进软件的用户界面的设计质量,也是窗体后台代码高质量的基础。
对于 Label控件,由于基本上不参与编程,只是在用户界面上显示一段不可改变的静态文本,因此可以不设置Label控件的名称,但当在少数情况下,当窗体后台代码需要操作Label控件的文本等属性值时,为了提高代码的质量也应当修改Label控件的名称。
比如对于下面这个窗体,各个数据输入控件的名称设置如下。
跟代码变量命名规则类型,窗体控件也有命名规则,业界主流的控件命名规则可能有多种,各种规则之间差别不大,笔者采用的命名规则大致如下[袁永福版权所有]控件名称一般为表示控件类型的前缀加上表示控件作用的字符组成。
常用控称前缀只是一个比较小的细节问题,即使有误也无伤大雅。
[袁永福版权所有] 笔者一般使用英文或者缩写来表示控件的作用,若没有合适的英文则采用汉语全拼音或者干脆用中文汉字,但绝不会用中文汉语拼音首字母,因为汉语拼音首字母很难仅仅从字母上猜出其表示的汉字,而猜测英文缩写相对容易得多。
如下图所示,可能有些人使用汉语拼音首字母来设置控件的名称,比如“姓名”文本框取名“txtXM”,这是一种不好的控件命名方式,因为很多时候是实在是难于从拼音首字母中猜测控件的作用,控件名称的低可读性降低了程序代码的可读性。
因此按照比较合理的命名方式,“姓名”文本框的名称就采用TextBox控件的前缀“txt”和表示姓名的英文“Name”组合而成为“txtName”。
一般来说商业软件不是“一次开发,长期使用”,而是“一次开发,长期修改,长期使用”,因此开发商业软件需要考虑到未来的修改和升级换代,此时程序代码不但要耐用,还需要耐看耐改,程序代码需要具备良好的可读性,而给控件设置合适的名称就是一个基础工作。
其实除了控件的名称,其他的诸如数据库表名字段名,窗体名称,程序模块名称等等都需要遵守一定的命名规范。
[袁永福版权所有]TabIndex属性首先的设置好控件的TabIndex属性值。
在程序运行显示窗体时,用户可以按下Tab键来切换输入焦点,而切换顺序就依照各个控件的TabIndex属性。
一般的输入焦点切换顺序按照从左到右,从上到下。
因此需要设置左上方位的控件的TabIndex属性值为小,右下方为的控件的TabIndex属性值为大。
但实际开发中还是按照具体功能需求来安排输入焦点切换顺序。
在设置各个控件的TabIndex属性值时不应设置为连续的值,比如设置第一个控件的TabIndex属性值为1,第二个控件为2,第三个控件为3,等等等。
采用这种设置时,当未来在输入焦点顺序中插入新的控件,则会需要修改大量的控件的TabIndex属性值。
为此笔者建议输入的各个控件的 TabIndex属性值不联系,比如有10的间隔,此时可以设置第一个控件的TabIndex属性值为10,第二个控件为20,第三个控件为30,等等等。
这样就为未来插入新的控件留下TabIndex顺序的空间。
如下图所示在这个“用户信息”窗体设计的例[袁永福版权所有]子中,当该窗体运行显示后,用户可以按下Tab键从左到右从上到下的切换焦点。
有些控件并不能接受输入焦点,比如Label控件,但仍然需要为这类控件设置合适的TabIndex属性值。