【问题标题】:Changing textbox text causes parent windows to resize incorrecly更改文本框文本会导致父窗口错误地调整大小
【发布时间】:2012-10-02 22:27:14
【问题描述】:

我已经尝试在很多地方寻找我遇到的问题的答案,但到目前为止我一无所获。

我目前拥有的是一个带有用户控件的 c# windows 窗体。一些用户控件内部还有其他控件。当我更改文本框中的文本时会发生什么,它的父窗口将不再像更改窗口大小时那样调整大小。即,即使在该特定窗口中禁用了水平滚动条,也会出现水平滚动条。几乎就像更改文本会更改父窗口的样式一样。

如果这太模糊,我在面板内有一个文本框,其中设置了一个停靠属性来填充。面板有一个 10 的填充,以允许文本框有一些空白以达到审美目的。该控件位于父控件中(我们将其称为父控件 1),而该控件又位于另一个控件中(我们将其称为父控件 2)。因此,当我更改文本框的文本(甚至添加空格)时,会使父 2 具有水平滚动条闪烁,有时甚至在手动调整窗体窗口大小时仍然存在。

【问题讨论】:

  • 请添加一个小代码 sn-p 显示您是如何设置这一切的。

标签: c# winforms textbox resize horizontal-scrolling


【解决方案1】:

您应该确保不仅UserControl 中的TextBox 停靠以填充,而且用户控件本身及其父级(及其父级)正确停靠或设置了锚点,以便它们调整大小表格。

当用户输入一个字符时,你会执行任何特殊代码吗? (KeyPressed 事件等)。如果是,您应该尝试暂时禁用这些事件,看看它们是否会导致问题。

如果您发布代码示例,帮助会更容易。没有这个我们只能猜测,就像我试过的那样......

【讨论】:

    【解决方案2】:

    我发现了我的问题!当使用 autoScrollBars 和双缓冲时,它会导致水平滚动条在调整窗口大小时显示它不应该显示的时间(至少在我的情况下)。答案很简单,忘记autoScrollBars,实现我自己的垂直滚动条!

    我实际上是在把一些代码贴在这里给你们看,但是在看它的时候,我决定忘记自动滚动,你瞧,它起作用了!

    我其实很好奇为什么会这样。我的朋友听说 .net 的 autoScroll 存在一些问题,但我认为不会到这种程度。

    【讨论】:

      猜你喜欢
      • 2015-04-11
      • 1970-01-01
      • 2018-12-01
      • 2012-12-02
      • 1970-01-01
      • 2013-03-29
      • 2015-06-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多