列表框项目从窗口应用程序的列表框中移出

时间:2013-12-03 13:34:29

标签: c# winforms listbox

我在列表框中遇到了UI问题。问题非常不一致有时它出现在第一个按钮,有时它发生在很多次点击之后或当我使用列表框的滚动条时。我不明白它是如何以及从哪里来的。

我很遗憾地说我无法定义问题,但我附上了这个问题的图片来说明我的问题:

enter image description here

我已经完成了一些选择所有项目的代码,并在按钮点击时取消选择所有项目。代码如下:

private void btnSelectAll_Click(object sender, EventArgs e)
        {
            lstSelectRows.SelectionMode = SelectionMode.MultiSimple;
            for (int i = 0; i < lstSelectRows.Items.Count; i++)
            {
                lstSelectRows.SetSelected(i, true);
            }
        }

private void btnSelectNone_Click(object sender, EventArgs e)
        {
            this.lstSelectRows.SelectedIndex = -1;
        }

1 个答案:

答案 0 :(得分:1)

为避免出现这样的视觉故障,请确保在更新项目时暂停绘图。

在更新项目之前,只需致电ListBox.BeginUpdate(),然后在完成后致电ListBox.EndUpdate()

private void btnSelectAll_Click(object sender, EventArgs e)
        {
            lstSelectRows.BeginUpdate();
            lstSelectRows.SelectionMode = SelectionMode.MultiSimple;
            for (int i = 0; i < lstSelectRows.Items.Count; i++)
            {
                lstSelectRows.SetSelected(i, true);
            }
            lstSelectRows.EndUpdate();
        }

private void btnSelectNone_Click(object sender, EventArgs e)
        {
            lstSelectRows.BeginUpdate();
            this.lstSelectRows.SelectedIndex = -1;
            lstSelectRows.EndUpdate();
        }