![C#项目开发全程实录(第4版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/544/24172544/b_24172544.jpg)
2.7 基本信息管理模块设计
![](https://epubservercos.yuewen.com/64AA3F/13043251004879506/epubprivate/OEBPS/Images/Figure-P75_21074.jpg?sign=1739254053-eHpEBsELviFwnttCdRooQ3bWkIoNBjWs-0-3c5400c00b3315d8e780a3aff4472cba)
视频讲解
2.7.1 基本信息管理模块概述
基本信息管理窗体主要用来对企业的基本信息进行添加、修改、保存和删除等功能。在该窗体中,首先判断相同的企业信息是否已经存在,如果存在,“添加”按钮不能显示,用户只能对已经存在的企业信息进行修改、保存和删除操作,否则,显示“添加”按钮,这时,用户可以进行企业的添加、修改、保存和删除操作。基本信息管理窗体运行结果如图2.22所示。
![](https://epubservercos.yuewen.com/64AA3F/13043251004879506/epubprivate/OEBPS/Images/Figure-P75_21067.jpg?sign=1739254053-SErh3SjIOyj2v7zilcSxoqnlLNfSowUa-0-4290ce34aa499b530e4156cbc5f027f2)
图2.22 基本信息管理窗体
2.7.2 基本信息管理模块技术分析
在基本信息管理模块中,需要输入大量带有固定格式的信息,如联系电话、邮政编码、E-Mail、企业网址等。如果当这些信息输入有错误时,本模块通过使用ErrorProvider控件来显示错误信息提示,以告知操作人员重新输入正确的信息。下面将对ErrorProvider控件进行简要介绍。
ErrorProvider控件可以在不打扰用户的情况下向用户显示有错误发生。当验证用户在窗体中的输入或显示数据集内的错误时,一般要用到该控件。如图2.23所示为ErrorProvider控件。
![](https://epubservercos.yuewen.com/64AA3F/13043251004879506/epubprivate/OEBPS/Images/Figure-P75_21070.jpg?sign=1739254053-QEbbnq9bFszaticLOsEvVk9VjsofqUvd-0-d1ef7cdd9aa35f652c8a73a5e960ba37)
图2.23 ErrorProvider控件
ErrorProvider控件通过SetError()方法设置指定控件的错误描述字符串。其语法格式如下:
public void SetError(Control control,string value)
control:要为其设置错误描述字符串的控件。
value:错误描述字符串。
判断文本框中输入的数据是否准确,需要在控件的Validating事件中进行判断,然后设置ErrorProvider控件的错误描述字符串,当控件正在验证时会引发此事件。
例如,下面的示例代码验证在textBox1控件中输入的信息是否为空,若为空,则errorProvider1控件显示“红色”的图标,并提示“不能为空”的信息。
![](https://epubservercos.yuewen.com/64AA3F/13043251004879506/epubprivate/OEBPS/Images/Figure-P76_52283.jpg?sign=1739254053-fVrj33Oegc2oHUsprNOFCmWnoz9mjmxx-0-0785e0f489c08d914b4e1f54a93443e0)
2.7.3 基本信息管理模块实现过程
本模块使用的数据表:tb_CInfo
基本信息管理模块的具体实现步骤如下。
(1)新建一个Windows窗体,命名为frmBInfoManage.cs,用于实现企业基本信息管理功能,该窗体主要用到的控件、控件属性设置及其用途如表2.11所示。
表2.11 企业基本信息管理窗体主要用到的控件
![](https://epubservercos.yuewen.com/64AA3F/13043251004879506/epubprivate/OEBPS/Images/Figure-T76_51719.jpg?sign=1739254053-ORDf0kloluBbMUCacQnKkJtLLw2XEpZk-0-f3ea274bc71455dbd239ff6f7a77cdef)
(2)首先,声明公共类BaseOperate和OperateAndVaildate的两个全局对象,通过类对象调用类中的功能方法,然后声明3个保护类型的全局变量,分别用于表示SQL语句、数据表名和判断用户单击的是“添加”按钮,还是“修改”按钮。实现关键代码如下:
例程16 代码位置:资源包\TM\02\CRM\PInfoManage\frmBInfoManage.cs
![](https://epubservercos.yuewen.com/64AA3F/13043251004879506/epubprivate/OEBPS/Images/Figure-P77_52286.jpg?sign=1739254053-3dZ1tjg76dvOagfmHukQ5mF7DDVjRUvE-0-88605b77afd47ef383945233ad2aaceb)
frmBInfoManage窗体的Load事件中,通过调用公共类BaseOperate中的getds()方法生成一个DataSet数据集,然后利用该数据集对DataGridView控件进行数据绑定,以显示企业基本信息。frmBInfoManage窗体的Load事件关键代码如下:
例程17 代码位置:资源包\TM\02\CRM\PInfoManage\frmBInfoManage.cs
![](https://epubservercos.yuewen.com/64AA3F/13043251004879506/epubprivate/OEBPS/Images/Figure-P77_52288.jpg?sign=1739254053-KqZymxZEjTMyXsrnDAXps4iAWdtHlMEE-0-72306ccf084ca324c4a2df6be042d880)
代码贴士
❶ 调用公共类BaseOperate中的getds()方法生成一个DataSet数据集对象。
❷ DataSet.Tables[index].Rows.Count属性用来获取DataSet数据集中包含表的行数目。
单击“添加”按钮,将“保存”按钮的Enabled属性设置为true,并给全局变量M_int_judge赋值为0。“添加”按钮的Click事件代码如下:
例程18 代码位置:资源包\TM\02\CRM\PInfoManage\frmBInfoManage.cs
![](https://epubservercos.yuewen.com/64AA3F/13043251004879506/epubprivate/OEBPS/Images/Figure-P77_52290.jpg?sign=1739254053-XImiW9YWnYjXILoXc8GsmgIDH3XPLoYr-0-e1455fe084a167e9cceb747481c8ae75)
“添加”按钮的Click事件中用到了自定义方法ClearText(),该方法为无返回值类型的自定义方法,它主要用来实现清空文本框内容的功能。ClearText()方法实现代码如下:
例程19 代码位置:资源包\TM\02\CRM\PInfoManage\frmBInfoManage.cs
![](https://epubservercos.yuewen.com/64AA3F/13043251004879506/epubprivate/OEBPS/Images/Figure-P78_52293.jpg?sign=1739254053-Z209bmBwnQNUSZ1knlhPIGmhOWm6onEb-0-567384953dde1a11cc6a03681d4d3b90)
单击“修改”按钮,将“保存”按钮的Enabled属性设置为true,并给全局变量M_int_judge赋值为1。“修改”按钮的Click事件代码如下:
例程20 代码位置:资源包\TM\02\CRM\PInfoManage\frmBInfoManage.cs
![](https://epubservercos.yuewen.com/64AA3F/13043251004879506/epubprivate/OEBPS/Images/Figure-P78_52295.jpg?sign=1739254053-DQCSZLGlsFyDPYMBkJJPSFukHpqZKMz7-0-daccad6cb9fe03dc3960c019376c6a89)
单击“保存”按钮,程序首先根据全局变量M_int_judge的值决定执行添加操作还是修改操作,然后利用公共类OperateAndVaildate的相应方法判断用户输入的信息是否正确,如果全部正确,则执行数据添加或修改操作。“保存”按钮的Click事件代码如下:
例程21 代码位置:资源包\TM\02\CRM\PInfoManage\frmBInfoManage.cs
![](https://epubservercos.yuewen.com/64AA3F/13043251004879506/epubprivate/OEBPS/Images/Figure-P78_52297.jpg?sign=1739254053-p7OiDDNl2ECr2VRh71PB6BOA3Aa2jcmL-0-ee77e6ddece50810f66a39b66e0f9db2)
![](https://epubservercos.yuewen.com/64AA3F/13043251004879506/epubprivate/OEBPS/Images/Figure-P80_52299.jpg?sign=1739254053-ixziYKXszDPcHApXST2CDvR4WTIXCTs3-0-98240190046f647806b7952313d16723)
![](https://epubservercos.yuewen.com/64AA3F/13043251004879506/epubprivate/OEBPS/Images/Figure-P81_52300.jpg?sign=1739254053-EyI9j25FmJq42QYtNsOvYVwkQXJiPMhl-0-7a3ed81fca8b13de8dca5cdd08586287)
代码贴士
❶ MessageBox.Show()方法用来在Windows应用程序中显示消息对话框。
❷ 调用公共类OperateAndValidate中的方法对文本框中的输入字符串进行验证。
❸ errorProvider组件的Clear()方法用来清除与此组件关联的所有错误。
❹ errorProvider组件的SetError()方法用来设置指定控件的错误描述字符串。
❺ 调用公共类BaseOperate中的getcom()方法执行SQL语句。
DataGridView控件中,选中企业的信息记录,单击“删除”按钮,可以将相应记录从数据表中移除。“删除”按钮的Click事件代码如下:
例程22 代码位置:资源包\TM\02\CRM\PInfoManage\frmBInfoManage.cs
![](https://epubservercos.yuewen.com/64AA3F/13043251004879506/epubprivate/OEBPS/Images/Figure-P81_52302.jpg?sign=1739254053-hfGkh3gT7tZ5iwVdfSLHQ7pP4YR4VINf-0-db68515b60657d40d61840ae11f9896f)
代码贴士
❶ DialogResult枚举用来指定标识符以指示对话框的返回值。
❷ DataGridView控件的CurrentCell属性用来获取或设置当前处于活动状态的单元格,RowIndex属性用来获取单元格的索引值。
该窗体中,当单击DataGridView控件的任意单元格时,其对应行的信息便显示在相应的TextBox文本框中。实现该功能的关键代码如下:
例程23 代码位置:资源包\TM\02\CRM\PInfoManage\frmBInfoManage.cs
![](https://epubservercos.yuewen.com/64AA3F/13043251004879506/epubprivate/OEBPS/Images/Figure-P82_52307.jpg?sign=1739254053-uBeiiHqrj8MacwfLRoqKkvySv8uwEC5J-0-4c805b9ec246c3d4f73a01706d3d75b3)