美文网首页
02-Windows基础控件一

02-Windows基础控件一

作者: D丝学编程 | 来源:发表于2021-04-13 14:57 被阅读0次

    控件概述:

    学习可视化编程技术,最重要的是学习控件的使用。

    在Visual Studio集成开发环境中,提供了大量控件。

    控件均为类,从工具箱拖拽到窗体则实例化出一个控件对象。

    常用控件分类:

    控件分类 说明
    文本类控件 可以在控件上显示文本,如TextBox、Label等
    选择类控件 为用户提供当前的项目,如RadioButton、CheckBox等
    分组控件 对窗体中的控件进行分组,如GroupBox、Panel等
    菜单 为系统制作功能菜单,如菜单栏、右键菜单
    工具栏 提供主菜单中常用的相关工具
    状态栏 用于显示程序的相关信息,如当前用户、当前时间等

    控件的基本操作:

    添加控件:从工具箱中单击某控件并将其拖拽到窗体合适位置

    删除控件:选择控件,右键→删除或按下“Delete”键

    对齐控件:选择控件,格式菜单→对齐

    锁定控件:选择控件,右键→锁定控件

    一、文本类控件

    (1)标签控件 (Label) :

    主要用于在窗体上显示用户不能编辑的文本。

    通过Text属性,可以设置或读取标签的文本。

    通过Visible属性,可以显示或隐藏标签。

    (2)文本框控件(TextBox):

    Text属性用于设置或获取用户输入的文本。

    ReadOnly属性,指定文本框是否允许编辑。

    创建密码文本框:

    (1)UseSystemPasswordChar属性设置为True。

    (2)PasswordChar属性设置为“*”。

    Multiline属性,指定是否为多行文本框。

    (3)按钮控件(Button):

    按钮控件允许用户通过单击来执行操作,单击按钮,触发Click事件。。

    Text属性用于设置按钮上的显示文本。

    设置窗体的AcceptButton属性,指定“接受”按钮。

    设置窗体的CancelButton属性,指定“取消”按钮。

    BackgroundImage属性设置按钮图像。

    BackgroundImageLayout属性用于指定按钮图像的布局方式。

    二、菜单栏

    菜单概述:

    通常用于显示程序的各项功能,以方便用户选择执行。

    菜单是组织大量选项最常用的方式。

    菜单通常分为下拉式菜单和弹出式菜单:

    (1)下拉式菜单(MenuStrip):

    通常出现在应用程序的顶部。

    主要由菜单栏、主菜单、子菜单和快捷键组成。

    快捷键格式:设置ShortcutKeys属性。

    (2)弹出式菜单(ContextMenuScript):

    弹出式菜单,也称为右键快捷菜单。

    点击右键时弹出,其位置由鼠标点击的位置决定。

    其结构与下拉式菜单基本相同。

    需要将弹出是菜单与什么控件关联,则设置该控件的"ContextMenuStrip"属性为菜单名字,如果直接与窗体关联,则直接设置窗体的"ContextMenuStrip"属性为菜单名字。

    (3)响应菜单命令:

    无论是下拉菜单还是弹出式菜单,通常使用菜单项的单击事件来响应菜单命令。

    实现思路与按钮的单击事件类似。

    例如点击某个菜单需要打开一个新的窗体,示例代码如下:

    private void 商品出库MToolStripMenuItem_Click(object sender, EventArgs e)
    {
        PutOutForm putoutForm = new PutOutForm();
        putoutForm.Show();
    }
    

    三、工具栏(ToolStrip)

    为用户提供了应用程序中常用菜单命令的快速访问方式。

    通常位于菜单栏的下方,由许多命令按钮组成,每个按钮上都有一个代表功能的小图标。

    工具栏相应菜单命令和菜单栏类似。

    四、状态栏(StatusStrip)

    状态栏通常用于显示应用程序的系统信息。

    如操作员信息、软件版本号、当前日期和欢迎信息等。

    状态栏通常位于应用程序的窗口底部。

    例如需要在状态栏显示欢迎信息以及当前时间,可以:

    (1)选择显示项的类型,显示文本一般使用“StatusLabel”。

    (2)在窗体的加载事件中编写如下代码:

    private void Form1_Load(object sender, EventArgs e)
    {
        this.toolStripStatusLabel1.Text = string.Format("当前系统日期:{0},欢           迎使用商品库存管理系统", DateTime.Now.ToShortDateString());
    }
    

    五、分组控件

    分组控件作为一个容器,可以对窗体中的控件进行分组。

    (1)GroupBox:作为一个容器,可以拖放其他控件到其中,起到分组的作用,可以通过Text属性设置左上角的文本。

    (2)Panel:作为一个容器,可以拖放其他控件到其中,起到分组的作用,当内部的控件超出panel区域的时候可以通过 AutoScroll=true , AutoSize=false 两个属性出现滚动条。

    GroupBox和Panel还可以将多个单选框进行分组,从而实现多个多选一的功能,而不是一个多选一的功能,关于此功能会在选择类控件中进行详细讲解。

    六、选择类控件

    在开发Windows应用程序时,通常需要提供界面让用户进行选择,此时需要使用选择类控件。

    (1)下拉组合框控件(ComboBox):

    下拉组合框控件用于为用户提供选择列表,用户可以选择列表中的某一项或输入文本值。

    向ComboBox中添加选择项,有两种方式:

    (1)设计器中通过界面添加选择项,找到Items属性设置选择项。

    (2)通过代码添加选择项

    //窗体的Load事件
    private void Form1_Load(object sender, EventArgs e)
    {
        //窗体加载时,向ComboBox中添加选择项
        this.cb_type.Items.Add("日用百货");
        this.cb_type.Items.Add("服装鞋袜");
        this.cb_type.Items.Add("数码产品");
        this.cb_type.Items.Add("母婴用品");
    }
    

    DropDownStyle属性:

    用于设置ComboBox的下拉样式,ComboBox支持三种下拉样式:

    属性值 说明
    Simple ComboBox列表部分总是可见
    DropDown(默认值) 用户可以编辑控件的文本框部分,单击箭头才显示列表
    DropDownList 用户不可以编辑控件的文本框部分,只能点击箭头选择一项

    响应选项值更改事件:

    例如实现如下效果,当combobox中的值发生改变时,在右边的Label中显示改变之后的值。


    0007.PNG

    实现步骤如下:

    (1)在设计器中双击下拉组合框控件,添加SelectedIndexChange事件。

    (2)向窗体中添加一个标签控件Label,用于显示选中的商品类别。

    (3)在SelectedIndexChange事件处理函数中编写代码。

    (4)为了防止选项的文本被随意编辑,将ComboBox的DropDownStyle属性设置为DropDownList。

    private void cb_type_SelectedIndexChanged(object sender, EventArgs e)
    {
          //获取选中的商品类别
          string selectedType = this.cb_type.Text;
          //显示到Label中
          this.lbl_type.Text = selectedType;
    }
    

    (2)复选框控件(CheckBox):

    用于为用户提供多项选择,Text属性用于指定控件右侧文本,Checked属性可以控制其选中状态,选中状态发生变化时,将触发CheckedChanged事件。

    例如我要实现如下效果,当点击"添加"按钮的时候,弹出一个对话框,显示我选择的所有促销时段:


    0008.PNG

    实现步骤如下:

    (1)向窗体中添加四个CheckBox控件

    (2)按界面要求,分别设置Text属性值

    (3)为“添加”按钮添加Click单击事件,在事件处理函数中编写代码

    //方案一:一个一个判断
    private void button3_Click(object sender, EventArgs e)
    {
        string promotionTime = ""; 
        if (this.checkBox1.Checked)
        promotionTime += this.checkBox1.Text + ",";
        if (this.checkBox2.Checked)
        promotionTime += this.checkBox2.Text + ",";
        if (this.checkBox3.Checked)
        promotionTime += this.checkBox3.Text + ",";
        if (this.checkBox4.Checked)
        promotionTime += this.checkBox4.Text + ",";
        //弹出对话框,显示最终的促销时段
        MessageBox.Show("促销时段:" + promotionTime);
    }
    //方案二:将checkbox放入panel,循环遍历panel中的控件进行判断
    private void button3_Click(object sender, EventArgs e)
    {
        foreach (CheckBox item in panel1.Controls)
        {
            string promotionTime = ""; 
            if(item.Checked == true)
                promotionTime += item.Text + ",";
        }
        MessageBox.Show("促销时段:" + promotionTime);
    }
    
    

    (3)单选框控件(RadioButton)

    用于为用户提供唯一选择,Text属性用于指定按钮右侧文本,Checked属性用于控制其选中状态,当选中状态发生更改时,将触发CheckedChanged事件。

    例如我要实现如下效果,当用户点击"添加"按钮的时候,弹出对话框展示用户选择的促销方案:


    0009.PNG

    实现步骤如下:

    (1)向窗体中添加5个RadioButton控件。

    (2)分别设置Text属性描述促销方案的名称。

    (3)窗体加载时默认选中第一种促销方案,在窗体的Load事件中,设置Checked属性为true。

    private void Form1_Load(object sender, EventArgs e)
    {
        //窗体加载时,默认选择第一种促销方案
        this.radioButton1.Checked = true;
    }
    

    (4)为“添加”按钮添加Click单击事件,在事件处理函数中编写代码

    --方案一:每个单选框去判断
    private void btAdd_Click(object sender, EventArgs e)
    {
        if(this.radioButton1.Checked== true)
            MessageBox.Show("促销方案:" + this.radioButton1.Text);
        if (this.radioButton2.Checked == true)
            MessageBox.Show("促销方案:" + this.radioButton2.Text);
        if (this.radioButton3.Checked == true)
            MessageBox.Show("促销方案:" + this.radioButton3.Text);
        if (this.radioButton4.Checked == true)
            MessageBox.Show("促销方案:" + this.radioButton4.Text);
        if (this.radioButton5.Checked == true)
            MessageBox.Show("促销方案:" + this.radioButton5.Text);
    }
    --方案二:将所有单选框放入panel中,循环panel中的控件进行判断
    private void btAdd_Click(object sender, EventArgs e)
    {
        foreach (RadioButton item in this.panel2.Controls)
        {
            if (item.Checked == true)
            {
                MessageBox.Show("促销方案:" + item.Text);
                break;
            }
        }
    }
    

    单选按钮分组问题:

    0010.PNG
    如上图的设计,原本的逻辑是性别二选一,学历三选一,但是实际效果会变成5个单选框5选1。

    为了解决此问题,可以分别将性别的两个单选框和学历的三个单选框分别用GroupBox或Panel包含起来进行单选框的分组,实现,原本的用户希望的逻辑。

    相关文章

      网友评论

          本文标题:02-Windows基础控件一

          本文链接:https://www.haomeiwen.com/subject/gixzkltx.html