我在这里做错了什么?要温柔。
对于CheckedListBox
,我只需使用以下内容即可更新项目:
private void button3_Click(object sender, EventArgs e)
{
checkedListBox4.Items.Add("whatever"); //or use an object
}
效果很好,但我想要做的是从另一个类中的方法发送CheckedListItem
一组项目
所以,我设置了另一个class something:form1
,它有一个委托指向我称之为\ invoke
委托调用\以这种方式调用:
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)
{}
checkedListBox4
中的项目集合已更新,其值与我发送的一样多,但它不会绘制项目\显示项目
我已尝试调用checkedListBox4_datavaluememberchanged
方法和其他一些checkedListBox4_changed
个事件,但系列中的项目再次更新,但它们未显示在CheckedListBox
我认为这与它没有eventargs
是否有一种简单的方法可以将成功的CheckedListBox
的所有属性,事件和属性与不成功的CheckedListBox
(以编程方式)
注意:该类继承自form1
所在的CheckedListBox
,并且方法访问权限设置为公开。
答案 0 :(得分:0)
您缺少的是告诉checkedListBox该对象应该是什么值。
checkedListBox4.ValueMember = "Text";
告诉CheckedListBox使用匹配该字符串的成员作为显示值。
https://stackoverflow.com/a/2023338/455536
http://msdn.microsoft.com/en-us/library/3yx132k0(v=vs.110).aspx
一个字符串,它指定从中绘制值的数据源的属性。