无法在checkedlistbox中看到新添加的项目

时间:2014-07-21 05:33:08

标签: c# winforms checkedlistbox

我正在开发一个c#程序,其中有一个CheckedListbox host_listbox

在我的代码中,我可以选择向checkedlistbox添加新项目。添加新项目后,我无法在checkedlistbox中看到新添加的项目,直到程序关闭并再次运行。

我试过了

Refresh()
BeginUpdate()
EndUpdate() 

但他们没有工作。

添加新项目时,它会在ITEMS的{​​{1}}中显示新添加的项目,但不会显示。

有人可以建议我一些替代方法让它发挥作用吗?

checkedlistbox

1 个答案:

答案 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();
    }

另外我不明白,为什么你的方法被标记为公开......