Winforms设计师行为不端,基本上破碎了

时间:2015-02-20 15:30:47

标签: c# winforms visual-studio-2012 windows-forms-designer

我们在Winforms中构建了一个复杂的遗留表单,最近已经开始严重行为不端,随着时间的推移它变得越来越糟糕。只需打开设计视图中的表单将改变表单的布局,有时以较小的方式(控件调整为较小的像素),有时以主要方式(组件移动到X位置) -6582)。由于此表单的大小和生成的.Designer.cs的性质,引用diff通常几乎没用,无法确定对表单所做的更改是否是您实际想要的更改。

基于我在其他问题中找到的一些建议:

AutoScaleMode设置为None。我用各种显示器分辨率进行了简单的实验,但无济于事。最终我们决定停止依赖锚点,而是使用TableLayoutPanel和Dock属性的组合。当麻烦真正开始的时候......

在重新设计了此表单上的一个毛茸茸的标签后,当我尝试保存Visual Studio旋转2-3分钟并报告"无法加载文件或装配' MyProject,Verion = XXXX, Culture = neutral,PublicKeyToken = null'或其中一个依赖项。系统找不到指定的文件" (如下所示:Visual Studio 2013 Can't save, build, or rebuild solution)。只要表单试图保存,就会发生这种情况。按照接受的答案中的建议后,我能够再次保存/构建。

尝试不久运行会导致非常长的构建时间和完全空的形式(如下所示:All controls on a form are invisiblehttps://stackoverflow.com/a/5524183/1015495)。 Controls.Add的所有调用已从设计器中删除(我认为这种大规模的更改导致了较长的构建时间)。我将表单恢复到以前的版本并开始重新创建我的更改。 现在,更加隐蔽的是,某些控件已经删除了所有孩子

在这种形式下工作最多只是一个时间点,在最坏的情况下是不可行的。我在网上找到的解决方案基本上归结为"手动重新创建表格"或者"不要使用Winforms"。不幸的是,这些都不是现在的选择。我们如何能够在中期未来缓解我们在使用此表单时遇到的问题,直到我们能够提出正确的解决方案?

1 个答案:

答案 0 :(得分:0)

我目前正在处理一个几乎相同的问题,我的Visual Studio 2013中的一个错误似乎是在用户控件上有一个“linkLabel”控件,该控件位于选项卡控件上的一个选项卡上主要形式。

我在父表单上有其他linkLabel控件,不会导致任何问题。奇怪的是,并非所有标签都搞砸了,只有其中一些。我只能得出结论,它通过了部分布局重组,达到了用户控制,然后轰炸,无法正确完成布局。我附加了第二个版本的visual studio来尝试捕获异常,并看到调试器中出现了各种状态行,但没有看到任何异常抛出。我并不熟悉那样做,所以我可能做错了。

我可以在添加用户控件之后将代码还原为,但在VisualStudio在设计器中打开表单并自动重新生成设计器代码之前。此时,在设计器中打开表单将始终导致完全相同的设计失败。只要我再也没有在设计器中打开代码,一切都可以在运行时正常工作。

如果我删除了对带有链接标签的自定义用户控件的任何引用,设计人员也会毫无困难地打开。起初我假设我的代码中有一个错误,所以我开始对事情进行评论,但即使只是拖动了基本元素,它仍然会发生。那么我开始删除元素并一次添加一个元素以查看是什么打破了它。在我的情况下,这被证明是“linkLabel”控件。我不确定是否还有其他控件可以做到这一点。现在我只是计划重新编写代码,但不要在用户控件上使用链接标签,看看它有多好。