【问题标题】:How to I get the currently selected check value from CheckedListBox?如何从 CheckedListBox 中获取当前选择的检查值?
【发布时间】:2018-02-04 17:21:39
【问题描述】:

我有一个 CheckedListBox 控件,有 6 个复选框可供选择。我正在尝试检测以下内容:

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

这似乎建议添加一个 SelectedIndexChanged 事件。这并没有告诉我用户更改了值。

还有另一个:SelectedValueChanged。

我也不知道这是否能告诉我什么,因为函数是:

*_SelectedValueChanged(object sender, EventArgs e)

EventArgs 对获取此必需信息毫无用处。

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

【问题讨论】:

  • 糟糕,我的错。我将此与不同的控件混淆了。您可以使用chkList.Items[chkList.SelectedIndex] 之类的东西,其中chkList 是您的CheckedListBox。例如:Console.WriteLine(chkList.Items[chkList.SelectedIndex].ToString());.
  • 虽然 ToString() 给出了值,但它并没有告诉我该项目是否被选中。如果我将值误认为是字符串值,请原谅我,而我的意思是检查值。不过,两者都知道还是有用的。
  • 在下面查看我的答案。

标签: c# checkedlistbox


【解决方案1】:

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

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

或更短的版本:

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

要确定所选项目是否被选中,您可以使用以下内容:

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

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

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

编辑: 我刚刚发现的一个更好的解决方案是使用GetItemChecked 方法。像下面这样的东西可以完美地工作:

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

希望有帮助:)

【讨论】:

  • 使用 Contains() 只能在项目已被选中时工作。如果我第一次选择一个复选框, Contains() 似乎返回 false。如果我再做一次,它似乎返回 true。
  • 您确定您确实在选中复选框(不仅仅是选择项目)?您可能需要查看 CheckOnClick 属性。将其设置为 true 将导致通过单击(选择项目时)选中/取消选中项目。
  • 您比我早了几秒钟询问了这样的财产。单击和双击很混乱,可能对我的用户来说。该物业有所作为。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多