【问题标题】:WinForms Designer doesn't match Desinger.cs codeWinForms Designer 与 Desinger.cs 代码不匹配
【发布时间】:2019-10-10 14:12:21
【问题描述】:

我在使用 WinForms Designer 时遇到了各种奇怪的问题,想知道是否有人知道解决方法。我将在这里列出一些症状(以防它们都是同一个问题的症状)。

当我关闭并重新打开表单的设计器时,我的标签页控件被“压缩”到左上角。

似乎受到影响的控件被锚定到底部(有时是左下,有时是右下,但始终包括“底部”)。如果我将控件移动到它们应该在的位置,保存,关闭设计器,然后重新打开它 - 它们都被“压缩”回左上角。

更奇怪的是,某些控件的属性窗格中显示的属性(例如复选框)与 Form.Designer.cs 文件中的内容不匹配(Form.Designer.cs 具有正确的位置值) :

运行我的应用程序时,它显示“压缩”控件并且不反映 Form.Designer.cs 文件中的值(正确)。

最后,有时当我去保存文件时,Visual Studio 会弹出一个“另存为”对话框,好像它不知道文件的实际位置,但随后提示我覆盖完全相同的文件(即使没有变化)。

如果有人对可能导致这些事情的原因有任何想法,那将非常有帮助!我曾尝试调查“文档大纲”窗口以查看是否存在一些奇怪的育儿问题(没有),尝试调整 Form.Designer.cs 文件以修复它(它没有,所以我撤消了这些更改) ,以及其他几件事。

【问题讨论】:

  • 您是否尝试重新创建新表单,然后在重新分配事件时复制/粘贴旧控件和代码?
  • @OlivierRogier 还没有尝试过 - 我可以试一试
  • CheckBox 控件的 Anchor 设置为 Left-Bottom,因此它将根据容器的大小更改控件的“位置”。
  • 您可以通过将用户控件设计为与其容器中的可用空间相同的大小来避免问题。另外,您的用户控件是否有与调整大小相关的自定义代码?
  • 您的问题似乎集中在 UserControl 内部的控件上,但问题在于 UserControl 本身。我会用这些信息更新问题。将“另存为”问题移至新问题。 Stack Overflow 更喜欢一个主题的问题。

标签: c# winforms windows-forms-designer


【解决方案1】:

好吧,我从来没有发现发生这种情况的真正原因,但我找到了原因(以及解决方法)。

原因是我在“编辑器”标签页上的用户控件(红色矩形内的所有内容都是一个用户控件的一部分):

我不确定为什么这会导致所有“重新排列”问题 - 直到最近我在标签页上拥有所有这些控件(没有用户控件“父级”)。但也许设计器不知何故变得超载并将控件放置在奇怪的位置。

无论原因是什么,“修复”(如果您可以这样称呼它)是从设计器中删除用户控件并在启动时将其添加到表单中。我以任何方式在自己的设计器中完成用户控件的所有设计,所以现在应该足够了。

如果有人对真正造成这种情况的原因有任何想法,请告诉我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多