ComboBox在Windows窗体上导致奇怪的行为

时间:2010-08-11 14:46:21

标签: c# .net winforms forms combobox

当我向我的Windows ComboBox添加Form时,我注意到一些奇怪的行为: 当我在没有Form的情况下调整ComboBox的大小时,它的行为正确并且文件菜单保持在它应该保持的位置,即使我尽可能向左拖动右角。当我添加ComboBox并尝试做同样的事情时,文件菜单被推到左边...在我的实际应用程序中,文件菜单完全消失,但它基于同样的问题。

这是“正常”调整大小,文件菜单位于正确的位置:

Normal

这是“异常”调整大小,文件菜单,组框和状态条全部被推到左侧:

Abnormal

两种形式之间的唯一区别是ComboBox ...是否有人知道为什么会发生这种情况,我该如何解决?

更新

文件Left的{​​{1}}值/属性变为负数,这会使事情变得非常丑陋,因为我在组框下面有一个MenuStrip,它总是偏向右边的0由固定填充(比如50 px)。此时,DataGridView的左侧与“文件”菜单的左侧之间的距离变为105像素,因为“文件”菜单现在为-55。

Negative

请注意,即使我一直向左滚动,文件菜单仍然保持在-55 ...所以如果我有一个从0到50偏移的东西(比如我的GridView),那么此时的区别是它们将是105像素。

3 个答案:

答案 0 :(得分:2)

这看起来像这样,因为两个表单之间的滚动区域不同。这是因为您现在可以在接受Focus的表单上拥有控件。由于组合框具有焦点,因此滚动区域会进行调整以使其保持可见。因此,“文件”菜单似乎向左移动,但实际上位于表单上的相同位置。

答案 1 :(得分:1)

调整大小时,自动滚动功能会将光标保持在视图中。

当表单大小极端时,您可以使用AutoScrollMargin,AutoScrollMinSize,MinimumSize,MinimumSize属性来阻止看起来太糟糕的事情。

容器控件还可以帮助创建更好的布局。

创建一个全屏和小屏幕的布局并不容易,当表单太小时,您甚至可能需要完全更改布局。

答案 2 :(得分:1)

表单自动滚动似乎是将组合框滚动到光标所在的视图中,因为它具有输入焦点。