1-3 Winform 中的常用控件(3

发布时间:2019-09-23 17:04:04编辑:auto阅读(1590)

    8案例学习:使用组合框控件

    本次实验目标是在FORM窗体上建立一个列表框控件,两个组合框控件以及一个文本框控件,通过这些控件彼此之间的关联,学习并掌握ComboBox组合框控件的主要属性和方法。本次实验目标如图1-15所示。

    1-15 ComboBox组合框控件实现目标界面
    根据图1-15所示,在窗体初始化时候加载部门信息到列表框和组合框内,上下组合框的DropDownStyle属性不同,上面为DropDown类型,下面为DropDownList类型。当选择上面组合框中的具体工作部门,选中信息将分别呈现在文本框,列表框和下面的列表框之中。

     

    u 实验步骤(1):

     

    由图1-15所示,从工具箱之中拖拽一个列表框控件,两个组合框控件以及一个文本框控件到Form窗体上,调整控件基本属性以达到图1-15效果。在设置上下两个组合框控件时候,分别设置其属性DropDownStyle 属性为DropDownDropDownList类型。这两种类型呈现的效果完全一样,但是DropDown类型是可以读写的,但是DropDownList类型仅仅为只读状态,不可编辑。DropDownStyle还有一个属性为SimPle,列表信息完全展开,类似于列表框的样式,并且也为只读状态,不可编辑。见图1-16

    1-16  ComboBox组合框控件DropDownStyle属性的三种状态
    u 实验步骤(2):

     

    用鼠标双击窗体界面,进入.cs文件编辑状态准备进行开发。代码加下:
    小实验:在窗体初始化事件Form_Load中加载数据到具体控件:

    private void Form011_Load(object sender, EventArgs e)

            {

                this.comboBox1.Items.Add("财务部");

                this.comboBox1.Items.Add("产品部");

                this.comboBox1.Items.Add("销售部");

                this.comboBox1.Items.Add("生产部");

                //默认的选择是"产品部"

                this.comboBox1.SelectedIndex = 1;

                this.comboBox2.Items.Add("财务部");

                this.comboBox2.Items.Add("产品部");

                this.comboBox2.Items.Add("销售部");

                this.comboBox2.Items.Add("生产部");

                //默认的选择是"产品部"

                this.comboBox2.SelectedIndex = 1;

                listBox1.Items.Add("财务部");

                listBox1.Items.Add("产品部");

                listBox1.Items.Add("销售部");

                listBox1.Items.Add("生产部");

                //默认的选择是"产品部"

                this.listBox1.SelectedIndex = 1;

                //请读者注意学习comboBox,listBox控件如何定位值

                this.textBox1.Text = "产品部";

         }

    u 实验步骤(3):

    选择上面的ComboBox控件,在其SelectedIndexChanged选择变换事件里面填写下面的代码。
    小实验:ComboBox控件的SelectedIndexChanged事件编码:

    private void comboBox1_SelectedIndexChanged_1(object sender, EventArgs e)

            {

                string mess = comboBox1.SelectedItem.ToString();

                comboBox2.SelectedItem = mess;

                listBox1.SelectedItem = mess;

                textBox1.Text = mess;

         }

    9.对话框窗口

    在用户操作窗体系统时候,经常会遇到与计算机的会话机制,如报错或者某种信息反馈等。从根本上说对话框是继承窗体的并且被模式化的,对话框窗口(Dialog)更多的是从人机交互形式来看的,电脑给出提示所需参数并等待用户输入,使用者输入数据后执行,犹如一问一答的对话双方。Windows程序中一般用窗体来实现这个人机交互形式,由于是用窗体系统实现Dialog,为了达到等待用户输入的目的因此引入了系统对话框窗口概念。
    对话框窗口机制是一种典型的重载过程,该重载是通过MessageBox.Show()方法具体体现出来的,关于Show方法的重载类型如表1-4所示。
    重载方法参数

    说明

    Show(string text);

    显示具有指定文本的消息框。

    Show(string text, string caption);

    显示具有指定文本和标题的消息框。

    Show(string text, string caption, MessageBoxButtons buttons);

    显示具有指定文本、标题和按钮的消息框。

    Show(string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon);

    在指定对象的前面显示具有指定文本、标题、按钮和图标的消息框。

    1-6  MessageBox.Show()方法重载

    10 案例学习:对话框窗口综合应用

    1)非模式对话窗体Show的使用

    MessageBox.show()方法打开的窗体被称为是“非模式窗体”,这种对话窗体仅仅是显示出来系统窗口界面而已,其他显示并运行的窗口仍然可以在后台运行。另一方面,由于MessageBox.show()方法未进行绑定,它所显示的各个窗口、对话框是可以相互切换,而不需要关闭当前窗口和对话框。因此我们可以认为,每个由show方法打开的窗口的顺序是非固定的,如果遇到什么问题,由show方法打开的窗口的顺序可能会有很大的改变。
    本次实验目标是在Form窗体上建立一系列Button控件,通过这些按钮控件的鼠标单击事件呈现不同的对话框样式,最终显示界面如图1-17所示。

    1-17  MessageBox.Show()方法重载的不同效果
    u 实验步骤(1):

     

    由图1-17所示,从工具箱之中拖拽3Button控件和一个Label标签控件到Form窗体上,调整控件基本属性以达到图1-17效果。
    u 实验步骤(2):

     

    用鼠标双击Button控件,进入.cs文件编辑状态准备进行开发。代码加下:
    小实验:“问询提示”按钮鼠标单击事件源代码:

    private void button1_Click(object sender, EventArgs e)

            {

                MessageBox.Show("嘿,这是简单提示!","信息提示");

                //第一个文本是对话框正文信息,第二个文本是窗体左上角信息标志。

            }

    小实验:“简单提示”按钮鼠标单击事件源代码:

    private void button2_Click(object sender, EventArgs e)

            {

                DialogResult result = MessageBox.Show("嘿,这是问询提示!","问询提示",MessageBoxButtons.YesNo);

    //  1DialogResult属性用于获取或设置MessageBox.Show()方法返回的一个值,该值在单击按钮时返回到父窗体。

    //  2MessageBoxButtons.YesNo表示提示信息为“是,否”两种按钮

                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);

    //1、MessageBoxButtons.YesNoCancel参数表示按钮为“是、否、取消”三种状态按钮;

    //2、MessageBoxIcon.Question参数表示为 “问题图标”按钮

    //3、MessageBoxDefaultButton.Button3n参数表示默认“取消按钮”为默认触发按钮

    //4、MessageBoxOptions.RightAlign 参数表示对话框提示信息居右对齐。

                if (result == DialogResult.Yes)

                {

                    label1.Text = "您选择了图标YES";

                }

                else if(result==DialogResult.Cancel)

                {

                    label1.Text = "您选择了图标取消";

                }

                else if (result == DialogResult.No)

                {

                    label1.Text = "您选择了图标NO";

                }

       }

    2)模式对话窗体showDialog()的使用

    面对多窗口的调用的时候,我们往往不喜欢窗口之间的随意切换,那样还要花费时间寻找我们需要的窗口。如果业务操作流程一但出现问题,窗口的顺序也有可能被再次打乱,很不顺手。我们可以将show方法转化为showDialog()方法,顾名思义,showDialog()是一个进行路经绑定的show方法,它是不可以自由切换的,换言之,就是当你没有关闭你当前页的前提下,你是无法关闭该页面后面的任一页面的,它是当前唯一(路经打开)为true的。
    showDialog()是模式窗体,与show方法的主要区别在于以showDialog()打开的窗体,要等当前窗体关闭后才能操作其他窗体,而show()方法则不受此限制。
    建立showDialog()的方法比较简单,比如建立两个Form窗体,通过第一个Form窗体上的Button按钮打开另一个窗体。
    小实验:单击一个窗体的button按钮打开另一个窗体源代码:

    private void button1_Click(object sender, EventArgs e)

            {

                Form2 f2 = new Form2();//首先将另一个窗口Form2实例化为f2

                this.Visible = false;//将当前窗口设置为不可视;如果不这样处理则系统报错。

                f2.ShowDialog();//打开窗口Form2

                this.Visible = true;

     }

关键字