C#用户控件中的图形故障 - 调整大小会遮挡组件

4
我使用的自定义用户控件出现了问题,在Stack Overflow、MSDN和Google上搜索并没有找到与我遇到的问题相似的解决方案。
我的用户控件非常简单:它由一个标签、一个文本框和一个按钮组成,同时提供SaveFileDialog和FolderSelectDialog功能。文本框和按钮分别通过左右锚定和右对齐来设计,这样如果控件被调整为更大的尺寸,则文本框会扩大以填充间隙,而按钮将保持在控件右侧。
但遇到的问题是当控件被放大时,在构建和运行项目时控件默认大小右侧的区域变为空白。下面的图片说明了这个问题:
编辑器中: in editor 运行中: running 该控件在设计窗口中较小,但在将其添加到表单并加宽后,它的行为符合预期。然而,当我运行包含该控件的表单时,控件的一半不可见。
我怀疑我可能忽略了一些简单的东西,但我在搜索中无法找到任何解决此问题的方法。非常感谢您的帮助。

我已经为您内联了这些图片。 - adrianbanks
请使用Spy++的“查找窗口”功能。当您在应用程序中拖动光标时,它会识别、突出显示(带有红色框)并详细说明所有控件。它应该告诉您编辑框实际大小以及是否有任何东西覆盖它们。 - John Arlen
@John 感谢你的提示 - 我以前没有使用过 Spy++,知道它的存在很不错。不幸的是,当我将鼠标移动到文本框右半部分应该在的灰色区域时,它将其识别为顶层窗体,并且没有明显的指示另一个对象“覆盖”了我的控件。 - asfallows
1个回答

0

我猜想您的控件中可能添加了一个面板或其他的东西并在运行时被调到最前面。

从属性窗口的顶部,您可以选择用户控件中的所有控件。

检查所有控件是否符合您的要求。

如果发现该面板或其他内容,请删除它 :)

编辑: 好吧,这不是您的问题。

现在我只能假设您在构造函数中手动设置了一些用户控件的大小。在这种情况下,设计器将显示用户控件的正确大小,

但是在代码的其他地方,您又手动设置了用户控件的大小。如果布局已暂停且大小发生变化,则锚定控件的大小不会自动更改。

如果这是您的问题,那么可能很难找到。


谢谢您的回答,但我已经仔细检查了我的控件,文本框、标签和按钮是我控件中唯一的对象,在测试时用户控件也是表单上唯一的对象。 - asfallows
@kaldrenon,类似面板的东西覆盖了控件。尝试在您的窗体周围寻找一些东西。 - LarsTech
谢谢您的额外建议 - 我已经查看了控件的代码,但我并没有手动设置大小。当然,在.Designer代码中有调用设置大小的语句,但那是自动生成的,并且表现正常。 - asfallows

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接