控件概述:
学习可视化编程技术,最重要的是学习控件的使用。
在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;
}
}
}
单选按钮分组问题:
如上图的设计,原本的逻辑是性别二选一,学历三选一,但是实际效果会变成5个单选框5选1。
为了解决此问题,可以分别将性别的两个单选框和学历的三个单选框分别用GroupBox或Panel包含起来进行单选框的分组,实现,原本的用户希望的逻辑。
网友评论