繁体   English   中英

如何设置winform checkboxlist项目进行半检查?

[英]how to set winform checkboxlist items to be semi-checked?

我不知道这是否可能,但如果有人知道如何实现这一点,那将是明智的。 我在winform中有一个复选框列表,我需要对一些复选框进行半检查(例如,未选中复选框,也未检查复选框)。 甚至可以在winforms复选框列表中执行此操作吗? 如果没有,是否可以使用常规复选框而不是复选框列表来实现此目的?

这也可以在CheckListBox上实现,但您必须自己设置不确定状态,来自MSDN:

CheckedListBox对象通过CheckState枚举支持三种状态:Checked,Indeterminate和Unchecked。 您必须在代码中设置Indeterminate的状态,因为CheckedListBox的用户界面不提供执行此操作的机制。

还有一个代码示例:

  // Adds the string if the text box has data in it. 
  private void button1_Click(object sender, System.EventArgs e)
  {
     if(textBox1.Text != "")
     {
        if(checkedListBox1.CheckedItems.Contains(textBox1.Text)== false)
           checkedListBox1.Items.Add(textBox1.Text,CheckState.Checked);  // here you can set CheckState.Indeterminate!
        textBox1.Text = "";
     }
  }

供参考: http//msdn.microsoft.com/en-us/library/system.windows.forms.checkedlistbox%28v=vs.110%29.aspx

可以使用复选框。 ThreeState属性设置为true:

checkBox1.ThreeState = true;

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

CheckState可以是:

CheckState.Checked 
CheckState.Indeterminate
CheckState.Unchecked

例:

using System;
using System.Windows.Forms;

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

        CheckState state = checkBox1.CheckState;

        switch (state)
        {
        case CheckState.Checked:
        case CheckState.Indeterminate:
        case CheckState.Unchecked:
            {
            MessageBox.Show(state.ToString());
            break;
            }
        }

        MessageBox.Show(checkBox1.Checked.ToString());
    }
    }
}
private void button1_Click(object sender, EventArgs e)
{
    int index = checkedListBox1.Items.Add("test");
    checkedListBox1.SetItemCheckState(index, CheckState.Indeterminate);
}

不定

单击时设置不确定状态:

void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
{
    switch (e.CurrentValue)
    {
        case CheckState.Checked:
            e.NewValue = CheckState.Unchecked;
            break;

        case CheckState.Indeterminate:
            e.NewValue = CheckState.Checked;
            break;

        case CheckState.Unchecked:
            e.NewValue = CheckState.Indeterminate;
            break;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM