2017-08-27 156 views
0

我有一个CheckedListBox控件,有6个复选框供您选择。我试图检测以下内容:如何从CheckedListBox中获取当前选定的检查值?

用户检查第三个索引并将该值从未选中更改为已检查。 内部:调用事件 - 获取第三个索引的选中值。

这似乎建议添加一个SelectedIndexChanged事件。那并不告诉我用户改变了价值。

还有另一种:SelectedValueChanged。

我不知道,告诉我在所有的无论是什么,因为函数是:

*_SelectedValueChanged(object sender, EventArgs e) 

EventArgs的是一种无用得到这个需要的信息。

同样,我只需要获取用户刚选择的项目的选中值。我不想收集所有选定的项目。只是当前选中的一个。谢谢。

+0

哎呀,是我不好。我把它与另一种控制混淆了。你可以使用类似'chkList.Items [chkList.SelectedIndex]'的地方,其中'chkList'是你的CheckedListBox。例如:'Console.WriteLine(chkList.Items [chkList.SelectedIndex] .ToString());'。 –

+0

虽然ToString()给出了该值,但它并不告诉我该项是否被选中。如果我误认为字符串值的价值,而原谅我,而我的意思是检查的价值。尽管如此,了解这两者是有用的 – Phil

+0

查看下面的答案。 –

回答

1

为了获得所选择的项目的显示值(内容),可以使用类似以下内容:

Console.WriteLine(checkedListBox1.Items[checkedListBox1.SelectedIndex].ToStr‌​ing()); 

或者更短的版本:

Console.WriteLine(checkedListBox1.SelectedItem.ToString()); 

要确定选择项目被检查与否,您可以使用类似以下内容:

Console.WriteLine(checkedListBox1.CheckedItems.Contains(checkedListBox1.SelectedItem)); 

Th将检查选中项目的内容是否可以在检查项目中找到。如果您的CheckedListBox有重复,那可能会导致错误的结果。为了避免这种情况,你可能检查索引,而不是价值,像这样:

Console.WriteLine(checkedListBox1.CheckedIndices.Contains(checkedListBox1.SelectedIndex)); 

编辑:一个更好的解决办法,我才发现,是使用GetItemChecked方法。像下面的内容将很好地工作:

Console.WriteLine(checkedListBox1.GetItemChecked(checkedListBox1.SelectedIndex)); 

希望帮助:)

+0

使用Contains()只能在项目已被选中时使用。如果我第一次选择复选框,Contains()似乎返回false。如果我再做一次,它似乎会恢复正确。 – Phil

+0

你确定你确实在检查复选框*(不只是选择项目)*吗?您可能需要查看['CheckOnClick'](https://msdn.microsoft.com/en-us/library/system.windows.forms.checkedlistbox.checkonclick(v = vs.110).aspx)属性。将其设置为true会通过一次单击来选中/取消选中项目(选择项目时)。 –

+0

你问我有关这样一个房产的问题,我已经过了几秒钟。点击和双击是令人困惑的,可能是我的用户。该财产造成了差异。谢谢! – Phil

相关问题