1、-基于基于C#语言语言主讲教师:钱主讲教师:钱 哨哨本课学时:本课学时:7272课时课时联系方式:联系方式:Windows程序设计课程地位课程地位综合基础课程SQL ServerXMLAjax Javascript&XMLASP.NETOracleRSSComputer BaseHTML&JavaScriptOOPJavaCDatabase BaseJSP/ServletEJB/WebServiceC#Struts/JSFTesting/SQALinuxWinForms第一章、第一章、Windows编程基础编程基础本章主要内容介绍1.1windows和窗体1.2VisualSIDE简介1.3事
2、件处理CONTENT1.1 Windows和窗体和窗体 本章学习目标:本章学习目标:理解 Windows 窗体 使用基本控件如标签、文本、按钮、列表框和组合框 掌握窗体的常用属性和方法GUI界面控件1.1 Windows和窗体和窗体 各种控件属性放置控件的区域1.1 Windows和窗体和窗体 WinForms应用程序可能存在多个窗体,用于获取用户输入的数据和向用户显示数据System.Windows.Forms 简单而强大 改善了接口和基类 IntelliSense 新的管理数据提供程序 安全 灵活的控件 通晓数据 向导1.1 Windows和窗体和窗体 1.1.2 创建创建 WinForm
3、s应用程序应用程序“开始”“程序”“Microsoft Visual Studio.NET 2005”“Microsoft Visual Studio.NET 2005”创建创建 WinForms应用程序应用程序 6-2设计窗口 1.1.2 创建创建 WinForms应用程序应用程序using System;using System.Drawing;using System.Collections;using System.ComponentModel;using System.Windows.Forms;namespace SampleProject/Form1 的摘要说明。/public
4、class Form1:System.Windows.Forms.Form/必需的设计器变量./提供了大量绘图工具的访问权限基础核心命名空间ArrayList、BitArray、Hashtable、Stack、StringCollection 和 StringTable 类 大量窗体和控件从 System.Windows.Forms.Form 派生Visual Studio.NET 生成的代码1.1.2 创建创建 WinForms应用程序应用程序private System.ComponentModel.Container components=null;public Form1()/Wind
5、ows 窗体设计器支持所必需的/InitializeComponent();/TODO:在 InitializeComponent 调用之后添加任何构造函数代码/构造函数调用 InitializeComponent()方法/下面代码见:Form1.Designer.cs文件private void InitializeComponent()ponents=new System.ComponentModel.Container();this.Size=new System.Drawing.Size(300,300);this.Text=Form1;项目的容器创建创建 WinForms应用程序应用
6、程序/清理所有正在使用的资源。【下面代码:Form1.Designer.cs】/protected override void Dispose(bool disposing)if(disposing)if(components!=null)components.Dispose();base.Dispose(disposing);释放系统资源1.1.2 创建创建 WinForms应用程序应用程序/下面代码见:program.cs文件STAThreadstatic void Main()Application.Run(new Form1();程序的主入口点 1.1.3 WinForms 中的常用控
7、件中的常用控件可视化界面组件统称为控件System.Windows.Forms.Control System.Windows.FormsControlButtonBaseButtonCheckBoxLabelListControlComboBoxListBoxTextBoxBaseTextBoxRadioButton1.1.3 WinForms 中的常用控件中的常用控件 标签按钮组合框列表框文本框标签标签标签标签属性说明Text该属性用于设置或获取与该控件关联的文本方法说明 Hide隐藏控件,调用该方法时,即使Visible属性设置为True,控件也不可见 Show 相当于将控件的Visibl
8、e属性设置为True并显示控件事件说明 Click用户单击控件时将发生该事件1.1.3WinForms中的常用控件标签控件标签控件按钮控件按钮控件文本框控件文本框控件列表控件列表控件组合框控件组合框控件private void linkLabel1_LinkClicked(object sender,LinkLabelLinkClickedEventArgs e)linkLabel1.LinkVisited=true;Form2 newform=new Form2();newform.Show();this.Hide();private void linkLabel2_LinkClicked(
9、object sender,LinkLabelLinkClickedEventArgs e)/label2.Visible=true;label2.Show();private void linkLabel3_LinkClicked(object sender,LinkLabelLinkClickedEventArgs e)label2.Visible=false;label2.Hide();案例:窗口的打开和关闭文本框文本框文本框文本框属性说明MaxLength 可在文本框中输入的最大字符数Multiline 表示是否可在文本框中输入多行文本Passwordchar 机密和敏感数据,密码输入
10、字符ReadOnly 文本框中的文本为只读Text 检索在控件中输入的文本方法说明 Clear删除现有的所有文本事件说明KeyPress用户按一个键结束时将发生该事件1.1.3WinForms中的常用控件按钮按钮按钮按钮属性说明Enabled确定是否可以启用或禁用该控件方法说明PerformClick Button控件的Click事件 事件说明Click单击按钮时将触发该事件1.1.3WinForms中的常用控件 案例:用户登录设计private void button2_Click(object sender,EventArgs e)clear();private void button1_
11、Click(object sender,EventArgs e)if(textBox1.Text=string.Empty|textBox2.Text=string.Empty)MessageBox.Show(信息禁止为空!,登录提示);clear();return;if(!textBox1.Text.Equals(admin)|!textBox2.Text.Equals(admin)MessageBox.Show(用户名称或密码为空!,登录提示);clear();return;else MessageBox.Show(欢迎您登录本系统!,消息提示);clear();public void c
12、lear()textBox1.Clear();textBox2.Clear();textBox2.Focus();列表框列表框列表框列表框属性属性ItemsSelectionModeSelectedIndexSelectedItemSelectedItemsText方法方法ClearSelected事件事件SelectedIndexChanged 1.1.3WinForms中的常用控件使用列表框(使用列表框(1)private void Form1_Load(object sender,EventArgs e)this.listBox1.Items.Add(软件部);this.listBox1
13、.Items.Add(硬件部);this.listBox1.Items.Add(财务部);this.listBox1.Items.Add(人事部);private void listBox1_SelectedIndexChanged(object sender,EventArgs e)MessageBox.Show(您选择的部门是:+listBox1.SelectedItem.ToString()+,位列第+listBox1.SelectedIndex.ToString(),信息提示);使用列表框(使用列表框(2)private void button1_Click(object sender
14、,EventArgs e)listBox1.Items.Clear();listBox1.Items.Add(软件部);listBox1.Items.Add(硬件部);listBox1.Items.Add(财务部);listBox1.Items.Add(人事部);private void button2_Click(object sender,EventArgs e)listBox1.Items.Insert(2,插入值);label1.Text=已经添加+listBox1.Items.Count.ToString()+条记录;组合框组合框组合框组合框属性说明DropDownStyle Com
15、boBox控件的样式MaxDropDownItems 下拉区显示的最大项目数方法说明Select在ComboBox控件上选定指定范围的文本1.1.3WinForms中的常用控件使用组合框使用组合框private void Form1_Load(object sender,EventArgs e)boBox1.Items.Add(财务部);boBox1.Items.Add(产品部);boBox1.Items.Add(销售部);boBox1.Items.Add(生产部);/默认的选择是产品部 boBox1.SelectedIndex=1;boBox2.Items.Add(财务部);boBox2.I
16、tems.Add(产品部);boBox2.Items.Add(销售部);boBox2.Items.Add(生产部);/默认的选择是产品部 boBox2.SelectedIndex=1;boBox3.Items.Add(财务部);boBox3.Items.Add(产品部);boBox3.Items.Add(销售部);boBox3.Items.Add(生产部);/默认的选择是产品部 boBox3.SelectedIndex=1;消息框窗口消息框窗口消息框窗口消息框窗口MessageBox.Show(“消息文本);消息框用于显示消息Abort,Cancel,Ignore,No,None,Ok,Ret
17、ry 和 Yes if(MessageBox.Show(“保存文件”,“保存,MessageBoxButtons.YesNo,MessageBoxIcon.Information,MessageBoxDefaultButton.Button1)=DialogResult.Yes)/保存文件所用的代码/保存后的 MessageBox1.1.3WinForms中的常用控件消息框窗口消息框窗口重载方法重载方法Show(string text);Show(string text,string caption);Show(string text,string caption,MessageBoxButt
18、ons buttons);Show(string text,string caption,MessageBoxButtons buttons,MessageBoxIcon icon);private void button1_Click(object sender,EventArgs e)MessageBox.Show(嘿,这是简单提示!,信息提示);private void button2_Click(object sender,EventArgs e)DialogResult result=MessageBox.Show(嘿,这是问询提示!,问询提示,MessageBoxButtons.Y
19、esNo);if(result=DialogResult.Yes)label1.Text=您选择了YES;else label1.Text=您选择了NO;private void button3_Click(object sender,EventArgs e)DialogResult result=MessageBox.Show(嘿,这是带有图标的问询提示!,问询提示,MessageBoxButtons.YesNoCancel,MessageBoxIcon.Question,MessageBoxDefaultButton.Button3,MessageBoxOptions.RightAlign
20、);if(result=DialogResult.Yes)label1.Text=您选择了图标YES;else if(result=DialogResult.Cancel)label1.Text=您选择了图标取消;else if(result=DialogResult.No)label1.Text=您选择了图标NO;应用程序示例应用程序示例 解决方案资源管理器属性窗口工具箱应用程序示例应用程序示例private void btnAdd_Click(object sender,System.EventArgs e)private void btnAdd_Click(object sender,S
21、ystem.EventArgs e)this.txtEmpName.Enabled=true;this.txtAddress.Enabled=true;this.cboDesignation.Enabled=true;this.lstCurrDeptName.Enabled=true;private void btnCancel_Click(object sender,System.EventArgs e)this.txtEmpName.Text=;this.txtAddress.Text=;this.cboDesignation.Text=“经理;private void btnExit_C
22、lick(object sender,System.EventArgs e)string str=;for(int ctr=0;ctr=this.lstCurrDeptName.SelectedItems.Count-1;ctr+)str+=n+this.lstCurrDeptName.SelectedItemsctr.ToString();MessageBox.Show(“选定的项目为n+str);Application.Exit();应用程序示例应用程序示例private void cboDesignation_SelectedIndexChanged(object sender,Syst
23、em.EventArgs e)MessageBox.Show(“您已经选定了+this.cboDesignation.SelectedItem.ToString();在退出应用程序之前,使用 MessageBox.Show()显示在 str 变量中存储选定项的消息框图标系统按钮System.Windows.FormsControlScrollableControlContainerControlForm标题栏控件1.1.4窗体容器简介1.1.4 窗体容器简介窗体容器简介 l SDI 单文档界面l MDI 多文档界面1.1.5 窗体的属性窗体的属性 属性属性StartPosition初始窗口位置
24、CancelButton按下esc键后执行那个按钮。ControlBox确定系统是否有图标和最大最小关闭按钮。FormBorderStyle指定边框和标题栏的外观和行为。HelpButton确定窗体的标题栏上是否有帮助按钮。KeyPreview确定窗体键盘事件是否已经向窗体注册。MainMenuStrip确定键盘激活和多文档合并。ShowInTaskbar确定窗体是否出现在任务栏中。WindowState确定窗体的初始可视状态。1.1.5 窗体的常用方法和事件窗体的常用方法和事件 方法方法Activate当窗体被激活时候发生MdiChildActivate当MDI子窗体被激活时候发生事件事件A
25、ctivatedClosedClosingLoad示例:显示另一窗体示例:显示另一窗体示例:显示另一窗体示例:显示另一窗体被调用的窗体类 窗体实例=new 被调用的窗体类();窗体实例.Show();下面,在菜单的单击事件中写下如下的事件。private void menuItem3_Click(object sender,EventArgs e)Form2 Mdichild=new Form2();Mdichild.MdiParent=this;Mdichild.Show();当然,需要再建立两个窗体对象,form2和form3窗体示例示例1:在:在form2窗体中进行如下操作窗体中进行如下
26、操作 单击“发送”按钮应用程序示例应用程序示例首先,将form2的comboBox1下拉框填充完毕后,增加load事件private void Form2_Load(object sender,EventArgs e)comboBox1.SelectedIndex=0;textBox3.Text=;textBox1.Focus();其次,添加form2的发送信息事件public void button1_Click(object sender,EventArgs e)if(textBox1.Text=|textBox2.Text=|comboBox1.Text=)MessageBox.Show
27、(姓名,或者邮件,或者提交,信息禁止为空!,信息提示);else this.Hide();Form3 childform3=new Form3(this.textBox1.Text,this.textBox2.Text,boBox1.SelectedItem.ToString(),this.textBox3.Text);childform3.Show();最后关闭窗体事件:private void button2_Click(object sender,EventArgs e)this.Close();应用程序示例应用程序示例对于form3窗体而言,在系统初始事件填写如下代码:public p
28、artial class Form3:Form private string _name;private string _emailId;private string _subject;private string _feedBack;public Form3(string varName,string varEmail,string varSubject,string varFeedBack)InitializeComponent();/在 private 变量中存储值 this._name=varName;this._emailId=varEmail;this._subject=varSu
29、bject;this._feedBack=varFeedBack;/在列表框中放置值 listBox1.Items.Add(姓名:+this._name);listBox1.Items.Add(邮件地址:+this._emailId);listBox1.Items.Add(信息主题:+this._subject);listBox1.Items.Add(反馈意见:+this._feedBack);private void button1_Click(object sender,EventArgs e)MessageBox.Show(感谢您输入的反馈!);this.Close();示例示例2:在:
30、在MDI父窗口中,子窗口如何彼此之间传父窗口中,子窗口如何彼此之间传递信息?递信息?代码见下示例示例3:如何防止重复打开子窗体啊?:如何防止重复打开子窗体啊?方法:方法:直接检测是否已经打开此MDI窗体/是否已经打开了?(用循环来判断)foreach(Form childrenForm in this.MdiChildren)/检测是不是当前子窗体名称if(childrenForm.Name=子窗体名称)/是的话就是把他显示childrenForm.Visible=true;/并激活该窗体childrenForm.Activate();return;/下面是打开子窗体Form1 childre
31、nForm=new Form1();childrenForm.MdiParent=this;childrenForm.Show();childrenForm.WindowState=FormWindowState.Maximized;示例示例4:另一种窗体之间的传值技巧(一):另一种窗体之间的传值技巧(一)传单个值传单个值 1、先在Form2中定义一个成员变量和一个属性如下:private string form2zhi=null;public string Form2ChuanZhi get return form2zhi;2、再在Form3中定义一个成员变量和一个属性如下:private
32、string form3zhi=null;public string Form3ChuanZhi set form3zhi=value;get return form3zhi;3、双击btn_ChuanZhi在这个事件中写入以下代码(主要是显示Form3窗体和将Form2中的值传过去):Form3 form3=new Form3();form3.Form3ChuanZhi=form2zhi;/将值传过去 form3.Show();代码见下示例示例5:另一种窗体之间的传值技巧(二):另一种窗体之间的传值技巧(二)类保存任意值类保存任意值 代码见下Winform界面美化技巧界面美化技巧 1、从附件
33、资料中确认有第三方动态链接库文件DotNetSkin.dll或者IrisSkin2.dll,这两个文件是第三方开发设计的Winform界面美化的主要文件2、打开VS2005,展开工具箱,右键点击界面选择“添加选项卡”,新建选项卡“皮肤”Winform界面美化技巧界面美化技巧 4、在工具箱项窗口点击“浏览”,导入第三方动态链接库文件DotNetSkin.dll或者IrisSkin2.dll,两个dll都是一样的用,不同的是DotNetSkin.dll用的皮肤文件是*.skn,IrisSkin2.dll是用的*.ssk3、在工具箱的新建选项卡“皮肤”里面单击右键,选择“选择项”,将展开选择工具箱项
34、Winform界面美化技巧界面美化技巧 5、则在工具箱的皮肤选项卡内将出现皮肤控件。5、皮肤文件的基本用法是:拖拽任何一个皮肤控件到某个窗体上面,进行如下的编码:namespace porjectname public partial class Form1:Form public Form1()InitializeComponent();this.skinEngine1.SkinFile=*.ssk;或是 this.skinUI1.SkinFile=*.skn;Winform界面美化技巧界面美化技巧 namespace WindowsApplication1 public partial c
35、lass Form7:Form public Form7()InitializeComponent();/this.skinEngine1.SkinFile=*.ssk;/string path=Environment.CurrentDirectory+skn皮肤LE4-DEFAULT.skn;this.skinUI1.SkinFile=path;有关ssk文件和skn文件库,请参见附件文件库中相关文件 总结总结 WinFormsWinForms可用于可用于 Windows Windows 窗体应用程序开发窗体应用程序开发 Windows Windows 窗体控件是从窗体控件是从 System
36、.Windows.Forms.Control System.Windows.Forms.Control 类派生的类类派生的类 标签控件用于显示用户不能编辑的文本或图像标签控件用于显示用户不能编辑的文本或图像 按钮控件提供用户与应用程序交互的最简便方法按钮控件提供用户与应用程序交互的最简便方法 组合框控件是列表框控件和文本框控件的组合,组合框控件是列表框控件和文本框控件的组合,用户可以键入文本,也可以从所提供的列表中选用户可以键入文本,也可以从所提供的列表中选择项目择项目 窗体提供了收集、显示和传送信息的界面,是窗体提供了收集、显示和传送信息的界面,是 GUIGUI的重要元素的重要元素 消息框显
37、示消息,用于与用户交互消息框显示消息,用于与用户交互-基于基于C#语言语言主讲教师:钱主讲教师:钱 哨哨本课学时:本课学时:7272课时课时联系方式:联系方式:Windows程序设计回顾回顾 WinFormsWinForms可用于可用于 Windows Windows 窗体应用程序开发窗体应用程序开发 Windows Windows 窗体控件是从窗体控件是从 System.Windows.Forms.Control System.Windows.Forms.Control 类派生的类类派生的类 标签控件用于显示用户不能编辑的文本或图像标签控件用于显示用户不能编辑的文本或图像 按钮控件提供用户与
38、应用程序交互的最简便方法按钮控件提供用户与应用程序交互的最简便方法 组合框控件是列表框控件和文本框控件的组合,组合框控件是列表框控件和文本框控件的组合,用户可以键入文本,也可以从所提供的列表中选用户可以键入文本,也可以从所提供的列表中选择项目择项目 窗体提供了收集、显示和传送信息的界面,是窗体提供了收集、显示和传送信息的界面,是 GUIGUI的重要元素的重要元素 消息框显示消息,用于与用户交互消息框显示消息,用于与用户交互第二章、第二章、WinForms控件控件本章主要内容介绍2.1WinForms的高级控件2.2单(多)文档操作及菜单CONTENT本节学习目标:本节学习目标:使用使用WinF
39、WinFormsorms中的高级控件中的高级控件单选按钮单选按钮图片框图片框选项卡控件选项卡控件滚动条滚动条 进度条进度条ImageList ImageList 控件控件ToolBar ToolBar 控件控件StatusBar StatusBar 控件控件Timer Timer 控件控件TreeView TreeView 控件控件ListView ListView 控件控件2.1 Winforms的高级控件的高级控件2.1.1 单选按钮(单选按钮(radioButton)WindowsWindows 窗体窗体单选按钮单选按钮控件以组的形式使用控件以组的形式使用 单选按钮允许用户从多个选项中选
40、择一个选项单选按钮允许用户从多个选项中选择一个选项属性说明Appearance RadioButton 控件的显示与命令按钮相似 Checked确定是否已选定控件方法说明Focus将输入焦点移至控件2.1.1 单选按钮(单选按钮(radioButton)如何按功能分组如何按功能分组 Windows Windows 窗体窗体 RadioButton RadioButton 控件?控件?1、在一个容器(如 Panel 控件、GroupBox 控件或窗体)内绘制单选按钮即可将它们分组。2、若要添加不同的组,必须将它们放到面板或分组框中。步骤:1、从“工具箱”的“Windows 窗体”选项卡中,将 G
41、roupBox 或 Panel 控件拖到窗体上。2、在 GroupBox 或 Panel 控件上绘制 RadioButton 控件。3、代码见下。2.1.2 图片框图片框 图片框控件表示可用于显示图像的图片框控件表示可用于显示图像的 Windows Windows 图片框图片框控件控件 显示位图、元文件、图标、JPEG、GIF 或 PNG 等格式的图形是一种图形显示控件属性属性说明Image用于指定图片框显示的图像。该图像可在设计或运行时设置SizeMode用于指定图像的显示方式。可以指定的各种大小模式包括AutoSize、CenterImage、Normal和StretchImage。默认值
42、为Normal方法说明Show显示控件图片框2.1.2 图片框图片框 练习练习1 1:使用设计器加载图片(:使用设计器加载图片(Windows Windows 窗体)窗体)练习练习2 2:运行时候修改图片大小和位置:运行时候修改图片大小和位置 public Form1()InitializeComponent();showpic();public void showpic()pictureBox1.Image=Image.FromFile(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal)+im
43、age.gif);pictureBox1.SizeMode=System.Windows.Forms.PictureBoxSizeMode.StretchImage;private void pictureBox1_Click(object sender,EventArgs e)if(pictureBox1.Image!=null)pictureBox1.Image.Dispose();pictureBox1.Image=null;else showpic();2.1.3 选项卡控件选项卡控件 在在 Windows Windows 应用程序中,选项卡用于将相关的控件应用程序中,选项卡用于将相关
44、的控件集中在一起,放在一个页面中集中在一起,放在一个页面中 选项卡控件选项卡控件用于显示多个选项卡,其中每个选项卡用于显示多个选项卡,其中每个选项卡均可包含图片和其他控件均可包含图片和其他控件 选项卡相当于另一个窗体,可以容纳其他控件选项卡相当于另一个窗体,可以容纳其他控件选项卡控件选项卡控件的属性选项卡控件的属性属性说明MultiLine指定是否可以显示多行选项卡。如果可以显示多行选项卡,该值应为True,否则为False。默认值为FalseSelectedIndex当前所选选项卡页的索引值。该属性的值为当前所选选项卡页的基于0的索引。默认值为-1,如果未选定选项卡页,则为同一值Select
45、edTab当前选定的选项卡页。如果未选定选项卡页,则值为NULL引用ShowToolTips指定在鼠标移至选项卡时,是否应显示该选项卡的工具提示。如果对带有工具提示的选项卡显示工具提示,该值应为True,否则为False【同时必须设置某页的ToolTipText内容】TabCount检索选项卡控件中选项卡的数目SelectedIndexChanged更改SelectedIndex属性值时,将触发该事件选项卡控件的属性选项卡控件的属性属性说明Alignment控制标签在标签控件的什么位置显示。默认的位置为控件的顶部Appearance控制标签的显示方式。标签可以显示为一般的按钮或带有平面样式Ho
46、tTrack如果这个属性设置为true,则当鼠标指针滑过控件上的标签时,其外观就会改变Multiline如果这个属性设置为true,就可以有几行标签RowCount返回当前显示的标签行数SelectedIndex返回或设置选中标签的索引TabPages这是控件中的TabPage对象集合。使用这个集合可以添加和删除TabPage对象TabCount返回标签的总数SelectedTab返回或设置选中的标签。注意这个属性在TabPages的实例上使用设定选项卡的数目或者综合应用程序示例(一)综合应用程序示例(一)设定选项卡的提示信息总选项卡设计分选项卡属性设计综合应用程序示例(二)综合应用程序示例(
47、二)统计页面操作基本信息private void tabControl1_SelectedIndexChanged(object sender,EventArgs e)label1.Text=当前操作统计信息为:页面为第当前操作统计信息为:页面为第+this.tabControl1.SelectedIndex.ToString()+页,选项卡页为页,选项卡页为+tabControl1.SelectedTab.Text+,共有页数,共有页数+tabControl1.TabCount.ToString();综合应用程序示例(三)综合应用程序示例(三)综合应用程序示例(四)综合应用程序示例(四)使用
48、窗体接受职员的个人信息和职业信息 将使用单选按钮、图片框和选项卡控件 应用程序提供有两个选项卡页 第一个选项卡页显示个人信息的文本框综合应用程序示例(四)综合应用程序示例(四)第二个选项卡页显示职员信息的文本框综合应用程序示例(五)综合应用程序示例(五)选项卡的基本操作2.1.4 进度条进度条 用于指示操作的进度、完成的百分比 外观是排列在水平条中的一定数目的矩形进度条的属性和方法进度条的属性和方法属性说明Maximum进度条控件的最大值。默认值为100Minimum进度条控件的最小值。进度条从最小值开始递增,直至达到最大值。默认值为0StepPerformStep方法应据以增加进度条的光标位
49、置的值。默认值为10Value进度条控件中光标的当前位置。默认值为0方法说明Increment按指定的递增值移动进度条的光标位置PerformStep按Step属性中指定的值移动进度条的光标位置案例见下:案例见下:进度条练习进度条练习1 1:加载数据库练习:加载数据库练习private void button1_Click(object sender,EventArgs e)string sqlstring=Data Source=(local);Initial Catalog=zrzx;User ID=sa;SqlConnection conn=new SqlConnection(sqlst
50、ring);string sql=select*from tbl_advice;SqlCommand cmd=new SqlCommand(sql,conn);SqlDataAdapter adp=new SqlDataAdapter();adp.SelectCommand=cmd;DataSet ds=new DataSet();adp.Fill(ds);conn.Dispose();conn.Close();conn=null;label1.Visible=true;progressBar1.Visible=true;progressBar1.Minimum=0;progressBar1.