![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=1738880075-K44Z6ZoEOHWvSyFQbNSPPDbiNWzNGNe8-0-466c010785a8b7ee420c238be788888f)
视频讲解
2.7.1 基本信息管理模块概述
基本信息管理窗体主要用来对企业的基本信息进行添加、修改、保存和删除等功能。在该窗体中,首先判断相同的企业信息是否已经存在,如果存在,“添加”按钮不能显示,用户只能对已经存在的企业信息进行修改、保存和删除操作,否则,显示“添加”按钮,这时,用户可以进行企业的添加、修改、保存和删除操作。基本信息管理窗体运行结果如图2.22所示。
![](https://epubservercos.yuewen.com/64AA3F/13043251004879506/epubprivate/OEBPS/Images/Figure-P75_21067.jpg?sign=1738880075-V1SzRHKtoTtu1GilFDmQ1xGdZidc1qxH-0-4246656d45e983b868459a7237105df9)
图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=1738880075-cieKCSdl20hY1Tyh7Ojh8xp9HnSVtrsm-0-7f6c7c8183c80324950c2ff0d33c6cfb)
图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=1738880075-UnX4t8mvB06E4LMilA1e1duNg6MZQYNf-0-d826d2a2f4f6e89ebd0bf468f0ae7bb4)
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=1738880075-FaxycsxrmKBmyKjPl3LCtTKnsbOZW3x7-0-e69f8154a9181469ac998a9f84f7fed4)
(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=1738880075-UGRST8AJ4SBz8lggS7uMtkNPBRrPvwWL-0-83a3973a36e9789a732885daa793514b)
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=1738880075-WiYEMqSfxaWENFToPjkMTpsJrAUh3nhK-0-ca4762dd6e8e52b39e002b6ffa02cc04)
代码贴士
❶ 调用公共类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=1738880075-7k0YCrNWkf43mAuarxVt16bQi9Tf1apF-0-385754d56cd4428dc63ac84eb8f369ae)
“添加”按钮的Click事件中用到了自定义方法ClearText(),该方法为无返回值类型的自定义方法,它主要用来实现清空文本框内容的功能。ClearText()方法实现代码如下:
例程19 代码位置:资源包\TM\02\CRM\PInfoManage\frmBInfoManage.cs
![](https://epubservercos.yuewen.com/64AA3F/13043251004879506/epubprivate/OEBPS/Images/Figure-P78_52293.jpg?sign=1738880075-4hJErDoCGEI1QjI1WShcej7eyQFd9VtF-0-bc0291b615e4f9576bb02c7f18411e45)
单击“修改”按钮,将“保存”按钮的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=1738880075-GNvUtmyLXx2ftdLs2LL0PZNjU0o2VzeU-0-61f62f3ef90ecd0f6012bcab1b781b21)
单击“保存”按钮,程序首先根据全局变量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=1738880075-F02n20kJVyqvu4wPQcyEhvZ1l5SzomPD-0-be104f3b4e7529a7287dfdf814264077)
![](https://epubservercos.yuewen.com/64AA3F/13043251004879506/epubprivate/OEBPS/Images/Figure-P80_52299.jpg?sign=1738880075-pHiARiPDM6kqXsTDwuOj5eABj11e95a7-0-dbf92865b2256ced88f4e84cb0576d44)
![](https://epubservercos.yuewen.com/64AA3F/13043251004879506/epubprivate/OEBPS/Images/Figure-P81_52300.jpg?sign=1738880075-4V1SjhVV1ksutmr1mlGjULbEFtxWw3rg-0-74a5513c7ea121acf225b978d327818d)
代码贴士
❶ 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=1738880075-04CtcvCtQULIta0uCNp08pOfg1G670Cf-0-31b48d0a657d8f7b9a755a9215b313a4)
代码贴士
❶ 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=1738880075-JPDkfaqU7pyPaOJxCE9r0h24XwD9ZcN9-0-cedfd49e581fcc6bfcfced307b63d2da)