我正在开发一个具有ListBox的应用程序,我可以通过加载文件或单击“添加”按钮来填充该列表,该按钮显示一个对话框以提示用户提供一些信息。从该对话框点击“保存”后,结果将添加到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();
}
}
为什么会发生这种情况,是否有可能的解决方案?
修改:好像有人对我的问题进行了投票。如果你留下一个评论,为什么它应该得到一个downvote而不是一个打击和运行的种类,我会很感激:/这个问题不清楚吗?如果有必要,我很乐意尝试解释更多。我怀疑这是由于缺乏“研究”。如果您愿意,我可以链接到Google结果。显然,在我的搜索中,没有其他人遇到过这个问题。我尝试使用如here所示的HorizontalExtent属性,但这也不起作用。
答案 0 :(得分:0)
听起来像删除行会导致重新评估滚动条,但添加不会。我可以想到强制执行此功能的一种方法是使列表框无效并重绘:如下所示:
lstItems.Invalidate();
lstItems.Redraw();