我正在开发一个c#程序,其中有一个CheckedListbox host_listbox
。
在我的代码中,我可以选择向checkedlistbox
添加新项目。添加新项目后,我无法在checkedlistbox
中看到新添加的项目,直到程序关闭并再次运行。
我试过了
Refresh()
BeginUpdate()
EndUpdate()
但他们没有工作。
添加新项目时,它会在ITEMS
的{{1}}中显示新添加的项目,但不会显示。
有人可以建议我一些替代方法让它发挥作用吗?
checkedlistbox
答案 0 :(得分:0)
您忘记在方法结束时添加此命令:
host_listbox.EndUpdate();
当您调用fill_checkboxlist()表单XXXX_Load方法时,省略此行时它将无效。我也认为你绝对不需要调用Refresh方法......
如果您仍有问题,请尝试检查:
在您的XXXXX.Designer.cs文件中查看#region Windows窗体设计器生成的代码。在那里,您将看到生成的代码,可能有一些您看不到并导致您出现问题的代码。应该是这样的:
//
// host_listbox
//
this.host_listbox.FormattingEnabled = true;
this.host_listbox.Location = new System.Drawing.Point(33, 36);
this.host_listbox.Name = "host_listbox";
this.host_listbox.Size = new System.Drawing.Size(179, 169);
this.host_listbox.TabIndex = 0;
你的方法不应该是静态的! 尝试像这样修改你的方法,看看会发生什么。
public void fill_checkboxlist()
{
host_listbox.Items.Clear();
host_listbox.BeginUpdate();
host_listbox.Items.Add("A", false);
host_listbox.Items.Add("B", false);
host_listbox.Items.Add("C", false);
host_listbox.EndUpdate();
}
如果您认为它必须是静态的,您必须这样做:
private void Form1_Load(object sender, EventArgs e)
{
fill_checkboxlist(host_listbox);
}
public static void fill_checkboxlist(CheckedListBox chlb)
{
chlb.Items.Clear();
chlb.BeginUpdate();
chlb.Items.Add("A", false);
chlb.Items.Add("B", false);
chlb.Items.Add("C", false);
chlb.EndUpdate();
}
另外我不明白,为什么你的方法被标记为公开......