当MultiColumn设置为true时,如何使checkedlistbox可垂直滚动?

时间:2009-02-02 19:16:00

标签: c# .net winforms checkedlistbox

我有一个Checkedlistbox,它有3行高,大到可以显示大约5个元素。

只要我的元素少于15个,一切都运行良好。 但是,如果我添加第16个元素,则checkedlistbox会显示一个水平滚动条,该滚动条占用2个项目行,这意味着所有项目现在只有一行。

更糟糕的是,如果我删除了额外的项目,水平滚动条将保持不变。

我尝试过使用:

mycheckedlistbox.HorizontalScrollbar = false;
mycheckedlistbox.ScrollAlwaysVisible = false;

但这似乎没有任何效果。

我使用multicolumn = true模式,这似乎导致了这种不当行为

有没有办法阻止控件显示水平滚动条,而是使用垂直滚动条?

我在msdn forums找到了一个有类似问题的人,但似乎他没有得到一个回答。

2 个答案:

答案 0 :(得分:1)

滚动条使项目的布局呈双稳态。您可以通过敲击头部来使滚动条消失:

  checkedListBox1.MultiColumn = false;
  checkedListBox1.MultiColumn = true;

迫使WF重新创建控制手柄,闪烁可能几乎不可察觉。是的,可以使用垂直滚动条,但您必须放弃MultiColumn。

答案 1 :(得分:1)

嗯,从那里的答案判断,从我跑的几个测试来看,这似乎有点不可能,但与此同时,我认为你试图打败目的。如果我在你的鞋子里,我会使用没有网格线的DataGridView和一个无法编辑的网格线。您可以更好地控制网格中发生的事情,并且您可以比CheckedListBox更多地自定义它。您可以获得与DataGridViewCheckBoxColumns相同的效果。

(如果您需要代码示例,请在评论中发帖,我会快速提供示例。)