【问题标题】:How will I get the SelectedItem? C# winforms CheckedListBox control我将如何获得 SelectedItem? C# winforms CheckedListBox 控件
【发布时间】:2010-09-27 06:29:37
【问题描述】:

在这个问题之前,我在这个网站上问了this 问题。 (Jon Skeet 先生回答了它!)

我在检索CheckedListBoxSelectedItem 时遇到了困难。 请考虑我的代码:

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
}

我将如何获得SelectedItem

【问题讨论】:

    标签: c#


    【解决方案1】:

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

    【讨论】:

    • @yonan2236:你能提供更多细节吗?
    • 我在使用数据源时无法获取所选项目先生。基于我上面的代码。 MessageBox.Show(checkedListBox1.SelectedItem.ToString());
    • @yonan2236:但我不建议使用 SelectedItem。我建议使用 CheckedIndices。我以为这就是您所说的“我无法让它工作”的意思。
    • 这是我使用checkedListBox1.SelectedItem.ToString()时的输出:"MyClass.Form3+StaticValues"
    • @yonan2236:在这种情况下很简单:只需将 SelectedItem 转换为 StaticValues 并以这种方式获取属性。但正如我继续所说,我建议您还是使用 CheckedIndices,因为可能有多个已检查项目。
    【解决方案2】:

    最初没有选择项,至少在用户选择一项之前是这样。 要检索用户选择的值,您必须对 wselectedIndexChanged 事件以及用户是否将该值更改为 OnSelectedValueChanged 事件做出反应。

    如果您想查找哪些项目设置了复选框,则需要查看 CheckecItemCollection 和 CheckedIndexCollection 属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-01
      • 2011-02-10
      • 1970-01-01
      相关资源
      最近更新 更多