![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=1738881930-7UPKqpEF0Ld0Oj20VFrvfa5i39jyINmA-0-546d756cdef53cc912a2b060d0ebd559)
视频讲解
2.7.1 基本信息管理模块概述
基本信息管理窗体主要用来对企业的基本信息进行添加、修改、保存和删除等功能。在该窗体中,首先判断相同的企业信息是否已经存在,如果存在,“添加”按钮不能显示,用户只能对已经存在的企业信息进行修改、保存和删除操作,否则,显示“添加”按钮,这时,用户可以进行企业的添加、修改、保存和删除操作。基本信息管理窗体运行结果如图2.22所示。
![](https://epubservercos.yuewen.com/64AA3F/13043251004879506/epubprivate/OEBPS/Images/Figure-P75_21067.jpg?sign=1738881930-cWjIeDeQ53S2Dcf0HzHg8v8HfUH9hjyn-0-32e9c8df04aa0f2424c67c4329215b3c)
图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=1738881930-GB67CiTIKDMJY9Jc1pGBa4B7si6Dof6Z-0-67ddc728a7ad14ad07b7c3f943e35c96)
图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=1738881930-FWPp9fLTxwtvxf5n8aoKbcdpmQcN35zf-0-ffd338599536d3f427d3fddb8469b102)
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=1738881930-9xDSmxs2ezGSiZtEts2nLacUerUDaAjH-0-0593ad5606aedf85695286946d28bbf6)
(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=1738881930-OueXc2YYSQKJsG1IwqbY9hTGtcZjidIQ-0-bdae6bf3cb8968ff82e80a4db57665d7)
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=1738881930-Vcfbf2VCc6Hjhvd7glXfl3PIEBKw8sZH-0-e4e0af78cd1531d6e349107c65ef9224)
代码贴士
❶ 调用公共类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=1738881930-iXv98WLK5ItaA7HaBOHNoR5IbKPuo7c6-0-da576b4251c544db4fa24505e407352b)
“添加”按钮的Click事件中用到了自定义方法ClearText(),该方法为无返回值类型的自定义方法,它主要用来实现清空文本框内容的功能。ClearText()方法实现代码如下:
例程19 代码位置:资源包\TM\02\CRM\PInfoManage\frmBInfoManage.cs
![](https://epubservercos.yuewen.com/64AA3F/13043251004879506/epubprivate/OEBPS/Images/Figure-P78_52293.jpg?sign=1738881930-YZ0xeXN6KRrG3ZkFxLZ1XQbp8m9VWlOz-0-fe264c3657edfdb414cfeabd537ff032)
单击“修改”按钮,将“保存”按钮的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=1738881930-Gs16m4Oj58j7BigbFdLyik7bJgQoxswU-0-4bb72945c179acae04844619168cd09f)
单击“保存”按钮,程序首先根据全局变量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=1738881930-rTB2QLxLVobACxSQv7D5woOCupf0M9bs-0-fb0d0da39eea2a0683fafe343368c65d)
![](https://epubservercos.yuewen.com/64AA3F/13043251004879506/epubprivate/OEBPS/Images/Figure-P80_52299.jpg?sign=1738881930-f2wf6P0uxmDzsWfj07DQlSaM4c9PhlvM-0-4f18bebfccfefee9a815f2b881f3b49b)
![](https://epubservercos.yuewen.com/64AA3F/13043251004879506/epubprivate/OEBPS/Images/Figure-P81_52300.jpg?sign=1738881930-4yUM3cFzlIJ3ngNKOrBBMlqpUlEUfv9o-0-d7ecdd6850a530553c340d774a91a59c)
代码贴士
❶ 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=1738881930-M9qMY3OeYVlJbDDg6ZSNNEzl5Bwy2MG2-0-d4c365102758821ac97a0e843a6cb597)
代码贴士
❶ 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=1738881930-iJcA8K7oLZazuYVdgy3ej049mIjOvXR6-0-06c7f934741b303d328538ae09e53d38)