【发布时间】:2014-02-09 10:17:34
【问题描述】:
我不知道这是否可能,但如果有人知道如何实现这一点,那就太好了。 我在 winform 中有一个复选框列表,我需要一些复选框进行半选中(例如,复选框未选中且未选中)。甚至可以在 winforms check-box-list 中执行此操作吗?如果没有,是否可以使用常规复选框而不是复选框列表来实现这一点?
【问题讨论】:
标签: c# winforms checkboxlist
我不知道这是否可能,但如果有人知道如何实现这一点,那就太好了。 我在 winform 中有一个复选框列表,我需要一些复选框进行半选中(例如,复选框未选中且未选中)。甚至可以在 winforms check-box-list 中执行此操作吗?如果没有,是否可以使用常规复选框而不是复选框列表来实现这一点?
【问题讨论】:
标签: c# winforms checkboxlist
这也可以在 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
【讨论】:
chkListPermissionGroups.SetItemCheckState(i, CheckState.Indeterminate);,但它所做的只是显示禁用的复选框......
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;
}
}
【讨论】:
可以使用复选框。将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());
}
}
}
【讨论】: