C#应用程序界面开发基础——窗体控制(4)——选择类控件(有部分地方没明白)

本文详细介绍了Windows Forms中的选择类控件,包括下拉组合框、复选框、单选按钮、数值选择和列表控件的功能与使用方法。

选择类控件

选择类控件有下拉组合框(ComboBox)控件、复选框(CheckBox)控件、单选按钮(RadioButton)控件、数值选择(NumreicUpDown)控件和列表(ListBox)控件。

1、下拉组合框控件

下拉组合框控件被称为下拉组合框控件,是由System.Windows.Forms.ComboBox类提供的,主要作用是将一个集合数据以组合框的形式显示给用户,当用户单击时将以下拉框显示给用户供用户从中选择一项。

1、创建拉下框并添加内容

(1)直接单击控件上方的小箭头,然后再单击“编辑项”,就会弹出 “字符串集合编辑器”对话框。

(2)在属性面板中选择Items属性,然后单击...按钮,也能弹出“字符串集合编辑器”对话框。

(3)在代码中添加ComboBox控件的内容。

编写程序,将ComboBox控件DropDownStyle的属性设置为DropDownList,并向控件中添加3项内容,使其为只可以进行选择操作的下拉框。

生成Form1的Load事件:

输入代码之前:

输入代码之后 : 

代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;
            comboBox1.Items.Add("语文");
            comboBox1.Items.Add("数学");
            comboBox1.Items.Add("化学");
        }
    }
}

运行结果如下:

DropDownStyle属性有3个属性值,这3个属性值对应不同的样式。

  1. Simple:指定将始终显示列表,以及可编辑的文本部分。这意味着用户可以输入新值,而并不局限于在列表中选择现有值。
  2. DropDown:默认样式,文本可编辑,下拉需用户单击箭头。
  3. DropDownList:文本不可编辑,下拉需用户单击箭头。

2、选中下拉组合框中可编辑部分的所有文本

当控件的DropDownStyle属性设置为DropDown时,再使用SelectAll方法,就可以选择ComboBox控件可编辑部分的所有文本

编写程序,将DropDownStyle属性设置为DropDown,并向控件添加3项内容,在选择下拉列表中的某项时,单击“选择”按钮,就会调用控件的SelectAll方法,实现可编辑框中的内容被选中。

生成botton1的Click事件: 

输入代码之前:

 输入代码之后 :

 Form1的Load事件,代码也修改了,如同上面。

代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            comboBox1.DropDownStyle = ComboBoxStyle.DropDown;
            comboBox1.Items.Add("语文");
            comboBox1.Items.Add("数学");
            comboBox1.Items.Add("化学");
        }

        private void button1_Click(object sender, EventArgs e)
        {
            comboBox1.SelectAll();
        }
    }
}

运行结果如下:

 不明白什么意思。

2、复选框控件

复选框控件,允许用户选择和清除关联选项。与单选按钮不同的是,复选框无论是处于同一个容器中还是在不同的容器中,都是允许多选的。

判断复选框是否被选中

代码之前:

代码之后:

 

代码如下

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void checkBox1_Click(object sender, EventArgs e)
        {
            if(checkBox1.CheckState==CheckState.Checked)
            {
                MessageBox.Show("选中成功");
            }
            else
            {
                MessageBox.Show("取消选中");
            }
        }
    }
}

对checkBox控件的CheckState属性进行判断,当该属性值为Checked时,则表明该控件处于选中状态;否则就处于未选中状态。

CheckState属性有以下3个值。

  1. Checked表明该控件处于选中状态。
  2. Indeterminate表明该控件处于不确定状态。一个不确定的控件通常具有灰色的外观。
  3. Unchecked表明该控件处于未选中状态。

运行结果如下:

实现CheckBox控件的多项选择

 CheckBox的Text属性修改为游泳,电影,绘画,唱歌。

 

 button的Text属性修改为显示信息

代码之前:

代码之后:

 放错的位置

代码内容:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApp1
{    
    public partial class Form1 : Form
    {
        CheckBox[] interests = new CheckBox[4];
        public Form1()
        {
            InitializeComponent();
            interests[0] = checkBox1;
            interests[1] = checkBox2;
            interests[2] = checkBox3;
            interests[3] = checkBox4;
        }

        private void checkBox2_CheckedChanged(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            richTextBox1.Multiline = true;
            richTextBox1.SelectionBullet = true;
            richTextBox1.Text = "姓名:张三" + "\n" + "兴趣爱好:";
            for(int i=0;i<4;i++)
            {
                if (interests[i].Checked)
                {
                    richTextBox1.Text = richTextBox1.Text + interests[i].Text + " ";
                }
            }
        }
    }
}

运行结果如下:

3、单选按钮控件

单选按钮控件,当与其它单选按钮成对出现时,允许用户从一组选项中选择单个选项。也就是说,当同一个容器中存在两个以上的单选按钮时,只能有一个被选中。但不在同一个容器中的几组单选按钮彼此不关联,是可以有多个被选中的。

使用RadioButton控件完成一道 选择题。

添加两个Label控件

 添加四个RadioButton控件

 一个Button控件:

 Form1发生Load事件

四个radioButton控件发生CheckedChanged事件: 

Button控件发生Click事件:

 

 

运行结果如下:

 Button的Text属性改为:提交答案

再次运行结果 :

4、数值选择控件

数值选择控件又称为数值选择控件,是一个显示和输入数值的控件,控件提供了一对上下箭头,主要作用是将一个数按一定的值进行增加或减少。它主要有四个常用的属性:

(1)Increment属性表示每次单击按钮时增加或者减少的量。

(2)Maximum属性表示最大值。

(3)Minumum属性表示最小值。

(4)Value属性表示当前值。

注意:如果想要使NumericUpDown控件的值发生更改时,就会响应事件ValueChange。

编写程序,向窗体添加NumbericUpDown控件,并使用Label控件在ValueChange事件中输出当前值。

 添加NumberiUpDown和Label的两个控件。

 Form1控件发生Load事件:

 numbericUpDown1控件发生ValueChanged事件:

 完整代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            numericUpDown1.Maximum = 50;    //设置控件的最大值为50
            numericUpDown1.Minimum = 0;     //设置控件的最小值为0
            numericUpDown1.Increment = 5;   //设置单击按钮时增加或者减少的数值为5
        }

        private void numericUpDown1_ValueChanged(object sender, EventArgs e)
        {
            label1.Text = "当前值为:" + numericUpDown1.Value;
        }
    }
}

运行结果如下:

5、列表控件

列表控件又称列表框,它显示一个项目列表供用户选择。在列表框中,用户一次可以选择一项,也可以选择多项。

ListBox控件与ComboBox控件添加选项的方法一致,都是通过“编辑项”或者在Items属性中打开“字符串集合编辑器”对话框输入选项。

1、在ListBox控件中添加和移除项

在实现ListBox控件的添加和删除之前,用户需要熟悉以下属性和方法。

1)常用属性

Items属性:用于存放列表框中的列表项,是一个集合。通过该属性,可以添加列表项、移除列表项和获得列表项的数目。

SelectedItems属性:获取ListBox控件中选定项的集合。通常将该属性设置为SelectedItems.Count,用于获取包含在当前选定的项的集合。

2)常用方法

Items.Add方法:用来向列表框中增添一个列表项。调用格式及功能如下:

ListBox对象.Items.Add(s);

用于把参数s添加到“listBox对象”指定的列表框的列表项中。

Items.Remove方法:用来从列表框中删除一个列表项。调用格式及功能如下:

ListBox对象.Items.Remove(s);

用于从ListBox对象指定的列表框中删除列表项s。

Items.Clear方法:用来清除列表框中的所有项。其调用格式如下:

ListBox对象.Items.Clear();

编写程序,在窗体中添加一个ListBox控件,并通过Add方法向该控件添加选项,再通过Remove方法删除选项。

添加一个ListBox控件

添加一个TextBox控件:

 添加三个Button控件:

 button1、button2、button3,在Text属性修改为:添加、删除、清空列表。

在button1_Click事件中,使用ListBox控件的Add方法,添加选项内容

 代码之前

代码之后 

在button2_Click事件中,使用ListBox控件的Remove方法,删除多余的内容 

在button3_Click事件中,使用ListBox控件的Clear方法,清空该控件的所有内容。 

Form_Load事件

 完整代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text == "")
            {
                MessageBox.Show("请输入要添加的选项");
            }
            else
            {
                listBox1.Items.Add(textBox1.Text);
                textBox1.Text = "";
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if(listBox1.SelectedItems.Count==0)
            {
                MessageBox.Show("请选择要删除的选项");
            }
            else
            {
                listBox1.Items.Remove(listBox1.SelectedItem);
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            listBox1.Items.Clear();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            button1.Text = "添加";
            button2.Text = "删除";
            button3.Text = "清空列表";
        }
    }
}

 运行结果:

输入文字:

点击添加:

2、在列表框中选择多项

在实现ListBox控件中选择多项之前,用户需要熟悉一下SelectionMode属性。该属性是用来获取或设置在ListBox控件中选择列表项的方法。

SelectionMode属性值:

(1)属性性为MultiExtended时,按下Shift键的同时单击鼠标或者同时按Shift键和箭头键之一,会将选定内容从前一选定项扩展到当前项。按Ctrl键的同时单击鼠标将选择或撤消选择列表中的某项。

(2)属性值为MultiSimple时,鼠标单击或按空格键将选择或撤消选择列表中的某项。

(3)该属性的默认值 为One,即只能选择一项。

(4)属性值为None时,表示无法选择项。

编写程序,将SelectionMode属性值 设置为MultiExtended,实现在控件中可以选择多项。

添加一个ComboBox控件,并输入相应的选项

 

 

添加ListBox

 

添加Label控件 

 

 

添加两个Button控件,button1和button2的text属性分别改为是《添加》和《查看选择数量》。

 

 

在button1_Click事件中,使用ListBox控件的Add方法,将ComboBox控件中的选项依次添加到ListBok控件中。接着,用户可以按下Shift键或Ctrl键和箭头键来进行选择。最后在button2_Click事件中,输入所选中课程的个数。 

 运行结果如下:

 选择英语,再按添加

 

代码不对了,检查 一下代码,都没有错。重新运行:

 

 


 

 

<think>好的,我现在需要处理用户的问题:“不明白”。看起来用户对之前的回答有疑问,或者需要进一步的解释。首先,我要回顾之前的对话历史,看看用户之前问了什么,以及我给出的回答内容。 用户最初的问题是,如何将测试号从000到999分成四个区间:000-300、301-600、601-900、901-999,并询问具体的方法。我提供了Excel公式、条件格式、Python代码和SQL查询四种方法。用户现在回复“不明白”,可能是在理解这些步骤时遇到了困难。 接下来,我需要分析用户可能的困惑点。可能的情况包括: 1. **对步骤的不理解**:用户可能对Excel公式的嵌套IF函数使用不熟悉,或者对Python代码中的某些语法有疑问。 2. **边界值问题**:例如,为什么301属于第二组而不是第一组,或者900属于第三组而不是第四组。 3. **具体操作问题**:比如如何在Excel中应用条件格式,或者如何运行Python脚本。 4. **方法选择疑问**:用户可能不确定哪种方法最适合他们的需求,比如数据量大小或技术背景。 我需要针对这些可能的问题逐一排查,并给出更详细的解释。同时,要使用更简单易懂的语言,避免专业术语过多,确保用户能够理解。 首先,我应该确认用户具体对哪一部分明白。可能用户有明确指出,因此我需要引导用户说明具体困惑的地方,但根据之前的回答,用户可能有理解其中一个或多个步骤。 在之前的回答中,我可能在某些地方出现了错误,比如在第二组的区间描述中,用户提到301到600,但原问题中的第三组是601到900,而第四组是901到999。需要检查是否有笔误,比如在之前的回答中是否错误地将第三组写成了“301-600”,这可能引起混淆。 例如,在之前的回答中,用户的问题定义部分,第三组的描述是“301-600”,这显然是错误的,应该是“601-900”。这可能导致用户在看步骤时产生困惑,尤其是当后续的Excel公式正确划分了区间时,但问题定义部分出现错误,用户可能会感到矛盾。 因此,我需要先纠正这个错误,并明确各个区间的范围。然后,重新组织解释,分步骤详细说明每种方法,确保逻辑清晰,避免混淆。 另外,用户可能对如何应用这些方法到实际数据中感到困难,例如在Excel中如何输入公式,或者在Python中如何运行脚本。可能需要提供更基础的操作指导,比如如何在Excel中插入公式,或者如何保存和运行Python文件。 同时,考虑到用户可能对编程不熟悉,Python代码部分可能需要更详细的解释,例如循环结构、函数定义等。或者,用户可能希望有更直观的示例,比如具体的测试号分结果。 最后,我需要保持回答的结构清晰,分点说明,使用户能够逐步跟进,并鼓励用户提出更具体的问题,以便进一步帮助。</think>### **逐步解释:测试号区间分方法** --- #### **一、问题修正与明确** 您提供的原始分组存在笔误,正确分组应为: - **第1组**:`000-300`(包含000和300) - **第2组**:`301-600`(包含301和600) - **第3组**:`601-900`(包含601和900) - **第4组**:`901-999`(包含901和999) --- #### **二、关键概念解析** ##### **1. 边界值问题** - 为何`300`属于第1组,`301`属于第2组? **答**:区间划分是**左闭右闭**的(即包含两端数字)。例如: - `300`满足 `000 ≤ 300 ≤ 300` → 第1组 - `301`满足 `301 ≤ 301 ≤ 600` → 第2组 ##### **2. 前导零处理** - 若测试号为`"005"`(文本格式),需先转换为整数`5`再比较 --- #### **三、Excel操作详解** ##### **步骤1:IF公式逐层判断** 1. 在B列输入公式(假设测试号在A列): ``` =IF(A1<=300, "000-300", IF(A1<=600, "301-600", IF(A1<=900, "601-900", "901-999"))) ``` - **逻辑说明**: - 优先判断是否≤300,成立则归为第1组 - 若不成立,再判断是否≤600(实际范围是301-600) - 以此推 2. **操作演示**: | A列(测试号) | B列(公式结果) | |---------------|-----------------| | 250 | 000-300 | | 450 | 301-600 | | 750 | 601-900 | | 950 | 901-999 | ##### **步骤2:条件格式染色(可视化分组)** 1. **设置规则**: - 选中A列 → “开始” → “条件格式” → “新建规则” → “使用公式” - 第1组公式:`=A1<=300` → 设置为红色 - 第2组公式:`=AND(A1>=301, A1<=600)` → 设置为蓝色 - 其他组依此推 --- #### **四、Python代码逐行解释** ```python # 生成所有测试号(000到999) test_numbers = [f"{i:03d}" for i in range(0, 1000)] def classify_number(num_str): num = int(num_str) # 将文本转为整数(如"005"→5) if num <= 300: return "000-300" elif num <= 600: # 隐含条件:num > 300 return "301-600" elif num <= 900: # 隐含条件:num > 600 return "601-900" else: # 剩余情况:901-999 return "901-999" # 测试代码 print(classify_number("300")) # 输出:000-300 print(classify_number("301")) # 输出:301-600 print(classify_number("900")) # 输出:601-900 print(classify_number("999")) # 输出:901-999 ``` --- #### **五、常见疑问解答** ##### **1. 为何不直接写301-600,而是用`<=600`?** - **答**:利用IF语句的**顺序判断特性**,当数值>300时才会进入第二个IF,此时只需判断是否≤600即可覆盖301-600 ##### **2. 如何验证边界值?** - **推荐方法**:手动测试临界值(如300, 301, 600, 601, 900, 901, 999) --- #### **六、下一步建议** 1. 如果您需要**批量处理数据**,推荐使用Python代码(效率更高) 2. 若只需简单分,Excel公式更快捷 3. 可提供您的具体数据样例,我们可针对性调试 需要进一步解释哪一部分?欢迎具体描述! 🛠️
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值