整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

WinForms 中的 CheckBox 控件使用指南

WinForms中,CheckBox 控件是一个允许用户选择或取消选择的单选按钮。它通常用于表示布尔值(真/假)或允许多选的情况。以下是如何使用 CheckBox 控件的一些基本信息和示例代码。

创建和设置 CheckBox 控件

  1. 添加 CheckBox 控件:在 Visual Studio 的工具箱中找到 CheckBox 控件,并将其拖放到窗体上。
  2. 设置 CheckBox 属性:您可以设置 CheckBox 的 Text 属性来指定显示的文字,以及 Checked 属性来指定默认的选中状态。

事件处理

  • CheckedChanged 事件:当 CheckBox 的选中状态发生变化时,会触发 CheckedChanged 事件。

示例代码

以下是一个简单的示例,演示如何创建一个 CheckBox 控件,并处理其 CheckedChanged 事件:

public partial class MainForm : Form
{
    public MainForm()
    {
        InitializeComponent();

        // 创建 CheckBox 实例
        CheckBox checkBox1 = new CheckBox();

        // 设置 CheckBox 的一些属性
        checkBox1.Location = new Point(10, 10);
        checkBox1.Size = new Size(100, 20);
        checkBox1.Text = "我同意条款和条件";

        // 将 CheckBox 添加到窗体的控件集合中
        this.Controls.Add(checkBox1);

        // 为 CheckBox 添加 CheckedChanged 事件处理程序
        checkBox1.CheckedChanged += new EventHandler(checkBox1_CheckedChanged);
    }

    private void checkBox1_CheckedChanged(object sender, EventArgs e)
    {
        // 获取 CheckBox 的引用
        CheckBox checkBox = sender as CheckBox;

        // 在这里执行当选中状态改变时的操作,例如启用或禁用其他控件
        if (checkBox.Checked)
        {
            labelStatus.Text = "已选中";
        }
        else
        {
            labelStatus.Text = "未选中";
        }
    }
}

在这个示例中,我们创建了一个 CheckBox 实例,并设置了其位置、大小和显示的文字。然后,我们将 CheckBox 添加到窗体的控件集合中,并为其添加了 CheckedChanged 事件处理程序。在事件处理程序中,我们根据 CheckBox 的选中状态更新了一个 Label 控件的文本,以反映当前的选中状态。

通过这些基本步骤,您可以在 WinForms 应用程序中使用 CheckBox 控件来收集用户的布尔输入,或者在用户界面中提供可切换的选项。


使用 CheckBox 为用户提供一个选项,例如 true/false 或 yes/no。 控件 CheckBox 可以显示图像或文本或两者。

CheckBox 控件 RadioButton 具有类似的功能:允许用户从选项列表中选择。 CheckBox 控件允许用户选取选项的组合。 相比之下, RadioButton 控件允许用户从互斥选项中进行选择。

正文


常用属性


Checked

获取或设置一个值,该值指示 CheckBox 是否处于选中状态。

CheckState

获取或设置 CheckBox 的状态。

ThreeState

获取或设置一个值,该值指示此 CheckBox 是否允许三种复选状态而不是两种。

Tag

获取或设置包含有关控件的数据的对象。

Text

获取或设置与此控件关联的文本。

常用事件


CheckedChanged

当 Checked 属性的值更改时发生。

CheckStateChanged

当 CheckState 属性的值更改时发生。

我们做一个checkbox的权限设置界面

设置权限按钮设置名称:btnSet

代码

private void btnSet_Click(object sender, EventArgs e)
{
    StringBuilder sb = new StringBuilder();
    
    if (checkBox1.Checked)
    {
        sb.Append("基本信息管理;");
    }
    if (checkBox2.Checked)
    {
        sb.Append("库存管理;");
    }
    if (checkBox3.Checked)
    {
        sb.Append("权限管理;");
    }
    if (checkBox4.Checked)
    {
        sb.Append("设备管理;");
    }
    if (checkBox5.Checked)
    {
        sb.Append("质量管理;");
    }
    MessageBox.Show(sb.ToString());
}

我们改进一下,通过编译窗体中的checkbox完成判断

StringBuilder sb = new StringBuilder();
foreach (var item in this.Controls)
{
    if (item.GetType()==typeof(CheckBox))
    {
        if (((CheckBox)(item)).Checked)
        {
            sb.Append(((CheckBox)(item)).Text+";");
        }
    }
}
MessageBox.Show(sb.ToString());

我们添加全选或全取消功能

private void btnSelectAll_Click(object sender, EventArgs e)
{
    foreach (var item in this.Controls)
    {
        if (item.GetType() == typeof(CheckBox))
        {
            ((CheckBox)(item)).Checked = true;
        }
    }
}

private void btnUnSelectAll_Click(object sender, EventArgs e)
{
    foreach (var item in this.Controls)
    {
        if (item.GetType() == typeof(CheckBox))
        {
            ((CheckBox)(item)).Checked = false;
        }
    }
}

Checkbox有一个三态的状态

CheckState



Checked

1

该控件处于选中状态。

Indeterminate

2

该控件处于不确定状态。 一个不确定的控件通常具有灰色的外观。

Unchecked

0

该控件处于未选中状态。

Indeterminate 不确定状态

时候在Win Form开发过程中,窗口显示的控件如单选、复选框等,需要根据数据库读取数据的结果动态生成指定数量的控件。因此涉及到动态生成指定数量的控件,并定义生成控件的事件等。本文主要以CheckBox为例对动态控件添加进行说明,为C#初学者提供参考与借鉴。首选给出本案例需求窗口:

案例Form


本例所用Form窗口如上图所示,问题:要求在生成chart图表时,根据统计结果即柱状图的数量,动态生成右侧CheckBox,并实现初始状态全部CheckBox为选中状态,改变选中数量时左侧图标自动显示对应柱状图。

解决问题思路:

(1)获取查询记录集的数量(要生成多少个CheckBox实例对象)

int cnt=ds.Tables[0].Rows.Count;//ds存储查询结果,查询过程略,cnt即为记录集条数

(2)对通过new 实例化的CheckBox如何存储?(本例需要生成三个checkbox)

C#中本身不提供长度未知的动态数组,因此不能直接使用数组对实例化后对象进行存储,本例设计使用ArrayList实现长度未知动态数组功能。

al = new ArrayList();//al是本例定义的变量,在load中进行初始化,初始化成功之后可存储checkbox;

(3) 循环创建CheckBox实例

for(int m=0;m<cnt;m++)
{
 ...
 CheckBox temp= new CheckBox();//temp为实例化CheckBox
 temp.AutoSize = true;
 temp.Location = new System.Drawing.Point(24, y);//绘图位置计算x坐标,Y坐标
 temp.Name = "checkBox"+(m+1).ToString();
 temp.Size = new System.Drawing.Size(59, 20);//checkbox绘制大小
 temp.Text = ds.Tables[0].Rows[m].ItemArray[0].ToString();
 ...
 temp.Checked = true;//初始化为选中状态
 temp.Click += new System.EventHandler(Check_Click);//绑定事件处理函数
 this.panel1.Controls.Add(temp);
}

在创建checkbox实例的同时,由于控件是动态创建的,因此需要手动定义消息处理,实现checkbox的点击事件。所有的checkbox都响应check_Click事件:

 temp.Click += new System.EventHandler(Check_Click);//绑定事件处理函数

(4) check_Click事件编写

该事件主要遍历所有动态生成的checkbox获取其状态构造查询语句,实现对记录集ds数据进行筛选。由于所有checkbox都响应该事件,因此需要object sender参数接收被点击的控件,通过arraylist al表示全部的checkbox,并以此为基础进行操作。

private void Check_Click(object sender, EventArgs e)
 {
 CheckBox ck = (CheckBox)sender;//接收当前点击checkbox
 for(int m = 0; m < al.Count; m++)
 {
 CheckBox cbk = (CheckBox)al[m];
 if (cbk.Checked)
 {
 //循环遍历checkbox,获取每一个checkbox状态,构造查询语句条件
 }
 }
}

以上完成了动态checkbox的创建及消息响应设置,可以进一步实现根据checkbox选择显示Chart不同内容了。主要实现代码如下:

chart1.Update();// 使区域无效
chart1.DataSource = ds.Tables[0].Select(str);//对ds记录集进行筛选。str参数在checkbox响应函数中定义;

至此本案例全部功能可以得到实现,最终实现效果如本文开头部分给出的运行效果截图。近期本头条号重点对C# Win Form编程基础知识进行说明。往期文章请点击链接阅读:

  1. Win Form登录框本地记住密码功能实现
  2. C# Win Form 编程实现图片的数据库存储
  3. C# Win Form 实现XML文件读写
  4. C# Win Form 读取CSV文件数据

本头条号长期关注于青少年编程资讯分享;编程课程、素材、代码分享及青少年编程培训。如果您对以上方面有兴趣,可关注该头条号,如有编程学习问题可以联系作者,共同探讨。