02-Windows基础控件一

2021-04-13  本文已影响0人  D丝学编程

控件概述:

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

在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包含起来进行单选框的分组,实现,原本的用户希望的逻辑。

上一篇 下一篇

猜你喜欢

热点阅读