我正在处理具有ListBox的应用程序,该列表框可以通过加载文件或单击显示对话框以提示某些信息的“添加”按钮来填充来自用户。点击该对话框中的“保存”后,结果将被添加到列表框中。但是,由于某些原因发生这种情况后,水平滚动条不能正确调整大小。Windows窗体ListBox无法在添加项目时正确调整水平滚动条的大小
通常它会出现,但最远的它仍然会遮挡大部分文本。奇怪的是,双击一个项目时会显示相同的对话框,我点击取消,滚动条正确调整大小。我试过lstItems.Refesh()
无济于事,导致滚动条从这个“添加”提示正确调整大小的唯一解决方法是添加结果两次,然后删除一个。这是相关代码:为附加提示
原代码(不工作):
private void btnItemAdd_Click(object sender, EventArgs e)
{
editForm editFrm = new editForm();
editFrm.ShowDialog();
if (editFrm.Result != null)
{
lstItems.Items.Insert(lstItems.Items.Count, editFrm.Result);
lstItems.Refresh();
}
}
解决方法:
private void btnItemAdd_Click(object sender, EventArgs e)
{
editForm editFrm = new editForm();
editFrm.ShowDialog();
if (editFrm.Result != null)
{
lstItems.Items.Insert(lstItems.Items.Count, editFrm.Result);
lstItems.Items.Insert(lstItems.Items.Count, editFrm.Result);
lstItems.Items.RemoveAt(lstItems.Items.Count - 1);
lstItems.Refresh();
}
}
可能相关。 doubleclick事件的代码:
private void lstItems_DoubleClick(object sender, EventArgs e)
{
if (lstItems.SelectedItem != null)
{
editForm editFrm = new editForm(lstItems.SelectedItem.ToString());
editFrm.ShowDialog();
lstItems.Items.Insert(lstItems.SelectedIndex, editFrm.Result);
lstItems.Items.RemoveAt(lstItems.SelectedIndex);
lstItems.Refresh();
}
}
为什么会发生这种情况,是否有可能的解决方案?
编辑:看起来好像有人已经低估了我的问题。如果你留下了评论,为什么它应该得到一个倒退,而不是一个碰运气的问题,我会很感激:/问题不明确吗?如果有必要,我很乐意尝试和解释更多。我怀疑这是由于缺乏“研究”。如果您愿意,我可以链接到Google结果。显然,在我的搜索中,没有人遇到过这个问题。我尝试使用HorizontalExtent属性,如here所示,但这也不起作用。
你为什么要使用ListBox.Items.Insert()方法,而不是ListBox.Items.Add() ? – Bernard 2011-06-01 16:05:28
@Bernard哦,呵呵。甚至没有想到这一点。我相信这是因为我首先编写了需要插入而不是添加的doubleclick代码,并且只是将其复制过来。我将它改为现在添加,但仍然无法正确重绘。 – Omega192 2011-06-01 17:06:54