0

我在这里做错了什么?要温柔。

对于CheckedListBox,我可以简单地使用以下方法更新项目:

private void button3_Click(object sender, EventArgs e)
{
    checkedListBox4.Items.Add("whatever"); //or use an object
}

效果很好,但我想做的是CheckedListItem从另一个类中的方法发送一组项目

所以,我设置了另一个class something:form1有一个委托,该委托指向我调用的方法\invoke

委托以这种方式调用\invokes:

public delegate void m_del(List<DirectoryInfo> ww, string rr);

代码中的其他地方:

m_del methtouse = new m_del(listme)  

public void listme(List<DirectoryInfo> fi, string mypath) 
{
    foreach (DirectoryInfo j in fi)
    {
        mypath = null; //mypath used by another method
        try
        {
            NewCheckboxListItem cb1 = new NewCheckboxListItem();
            cb1.Tag = j.Name;
            cb1.Text = j.Name;
            checkedListBox4.Items.Add(cb1);
        }
        catch (Exception w)
        {
            MessageBox.Show(w.Message);
        }
    }
 }                        

 public class NewCheckboxListItem
 {
     // define a text and
     // a tag value

     public string Text;
     public string Tag;

     // override ToString(); this
     // is what the checkbox control
     // displays as text
     public override string ToString()
     {
         return this.Text;
     }
 }

 methtouse( a List<DirectoryInfo> ww, a string rr)
 {}        

发生的情况是 中的 Item 集合checkedListBox4已更新并且具有与我发送它一样多的值,但它不会绘制该项目\显示该项目

我尝试调用一个checkedListBox4_datavaluememberchanged方法和一些其他checkedListBox4_changed事件,但集合中的项目再次更新,但它们没有出现在CheckedListBox

我认为这与它没有eventargs

有没有一种简单的方法可以并排比较成功CheckedListBox与不成功的所有属性、事件、属性CheckedListBox(以编程方式)

注意:类继承自form1所在CheckedListBox位置,方法访问设置为public。

4

1 回答 1

0

您缺少的是告诉 checkedListBox 该对象的值应该是什么。

checkedListBox4.ValueMember = "Text";

这告诉 CheckedListBox 使用与该确切字符串匹配的成员作为显示值。

https://stackoverflow.com/a/2023338/455536

http://msdn.microsoft.com/en-us/library/3yx132k0(v=vs.110).aspx

一个字符串,它指定要从中提取值的数据源的属性。

于 2014-02-22T13:37:07.763 回答