我如何获得SelectedItem? C#winforms CheckedListBox控件

时间:2010-09-27 06:29:38

标签: c#

在此问题出现之前,我在本网站上询问了this个问题。 (Jon Skeet先生回答了!)

我无法检索SelectedItem的{​​{1}}。 请考虑我的代码:

CheckedListBox

我如何获得public class StaticValues { private string value; private string display; public StaticValues(string val, string disp) { this.value = val; this.display = disp; } public string Value { get { return value; } } public string Display { get { return display; } } } private void Form3_Load(object sender, EventArgs e) { ArrayList dataSource = new ArrayList(); dataSource.Add(new StaticValues("001", "Item 1")); dataSource.Add(new StaticValues("002", "Item 2")); dataSource.Add(new StaticValues("003", "Item 3")); checkedListBox1.DataSource = dataSource; checkedListBox1.DisplayMember = "Display"; checkedListBox1.ValueMember = "Value"; } private void button1_Click(object sender, EventArgs e) { MessageBox.Show(checkedListBox1.SelectedValue.ToString()); // outputs correct SelectedValue MessageBox.Show(checkedListBox1.SelectedItem.ToString()); // this one doesn't for SelectedItem }

2 个答案:

答案 0 :(得分:1)

鉴于它是一个复选框列表,我怀疑使用CheckedListBox.CheckedIndices属性找到所有选中的项目会更好。从那里,您可以访问单个项目并从中找到适当的值。虽然DisplayMember有效,但我怀疑你最好将项目转换为已知类型并找到合适的价值,除非这对你来说真的很尴尬。可能还有另一种方式,但我不知道一个。请注意,CheckedListBox.ValueMember的文档声称它“与此类无关”。

答案 1 :(得分:0)

最初没有选定的项目,至少在用户选择一项之前。 要检索用户选择的值,您必须对wselectedIndexChanged事件做出反应,并且如果用户将该值更改为OnSelectedValueChanged事件。

如果您希望找到哪些项目设置了复选框,那么您需要查看CheckecItemCollection和CheckedIndexCollection属性。