0
在我的Windows窗体应用程序中,我添加了一个SplitContainer控件。在SplitContainer的panel1中,我有一个ListBox,在SpliContainer的panel2中,我有两个按钮。在ListBox的鼠标移动上,我想选择ListBox项目。下面是我的代码来选择列表框项目,如何恢复和最大化没有闪烁和布局重叠的表单?
private void ListBox1_MouseMove(object sender, MouseEventArgs e)
{
int i;
this.SuspendLayout();
for (i = 0; i < (this.listBox1.Items.Count); i++)
{
if (this.listBox1.GetItemRectangle(i).Contains(this.listBox1.PointToClient(MousePosition)))
{
this.listBox1.SelectedIndex = i;
return;
}
}
this.ResumeLayout(true);
}
的SuspendLayout()和ResumeLayout()被称为以避免面板的重叠的形式加载时。
如果我恢复窗体,鼠标移动到列表框并再次最大化窗体然后SplitContainer panel2中的按钮不能正确加载。如果我删除挂起和ResumeLayout恢复和最大化工作正常。我提到这个 stackoverflow query link。
ListBox不具有Resize和Dock属性。所以我不应该调用SuspendLayout和ResumeLayout?任何人都会建议在哪里使用SuspendLayout/ResumeLayout以及哪里不是?