14

最近我一直在对我们使用的许多控件进行一些改进,例如赋予属性默认值和使按钮私有而不是受保护。通过进行这种调整,您需要重新生成具有此控件的表单的设计器文件或从该控件继承的控件。

在过去,这并不是一个真正的问题,因为我们只有 20-30 个表格。目前我们有超过 300 个表格,这意味着在 VS2010 中打开相同数量的设计师。

所以我的问题是:你知道一种自动化这个过程的方法,所以所有的表格都会重新生成吗?

我一直在考虑一个查找设计器文件并打开文件的宏(最多打开 25-50 个文件以确保 VS 不会崩溃),但我无法让它工作。

我希望有人有一个建议!

4

3 回答 3

6

我发现做你想做的唯一方法是打开表单设计器,添加一个控件,然后保存。这将重新生成设计器代码。接下来删除新添加的控件,再次保存,关闭。

我通常通过双击工具箱中的按钮来添加按钮。这会将按钮置于位置 0,0。

几个月前,我做了一个包含大约 100 个表单和用户控件的项目。我没有在项目文件上递归的宏,而是记录了一个临时宏,然后为每个表单/用户控件运行宏并检查结果。

不要将重构与重新格式化混淆。我经常以大型形式优化和/或修改设计器代码。例如,我将更改控件添加到面板的顺序,以及如何将面板添加到其他面板。我不会盲目地重新生成设计器代码。

于 2012-01-05T09:53:51.240 回答
2

我也遇到了这个问题(另请参阅:强制 WinForms 重新生成 .designer.cs 文件)。

最后,我删除的大多数属性都是唯一命名的,并且我能够编写一个 shell 脚本来从包含属性名称的设计器文件中删除行。

请注意,这实际上删除了该行,而不仅仅是留下一个空行。
它需要从 Bash Shell 运行,如果您安装了 msysgit,那么该 shell 就可以了。
在这一点上,TextForeColor财产被移除了。

#!/bin/bash
files=$(find . -type f -name '*.Designer.cs' -print0 | xargs -0 grep -l 'TextForeColor')
for file in $files
do
    echo $file
    sed '/TextForeColor/ d' $file >$file.tmp
    mv $file.tmp $file
done
于 2012-01-05T09:37:04.217 回答
-3

使用表单的继承而不是维护超过 300 个控件的更改。

于 2012-01-05T09:25:22.670 回答