是否可以更改winforms designer文件?

是否可以更改winforms designer文件?,winforms,user-controls,windows-forms-designer,Winforms,User Controls,Windows Forms Designer,我创建了一个简单的类 Class UserControlBase Inherits UserControl End Class 然后,我将每个UserControls设计器文件中的Inherits子句更改为 Inherits UserControlBase 我知道一般情况下不应该手动修改设计器文件。但在这种情况下,你还能做什么?这样行吗?有没有我不知道的最佳实践?是否有其他方法来实现相同的目的(扩展UserControl)?我没有遇到更改继承行、添加名称空间或添加导入/使用语

我创建了一个简单的类

Class UserControlBase
     Inherits UserControl
End Class
然后,我将每个UserControls设计器文件中的Inherits子句更改为

   Inherits UserControlBase

我知道一般情况下不应该手动修改设计器文件。但在这种情况下,你还能做什么?这样行吗?有没有我不知道的最佳实践?是否有其他方法来实现相同的目的(扩展UserControl)?

我没有遇到更改继承行、添加名称空间或添加导入/使用语句的问题。如果您需要执行这3项操作中的任何一项,您将找不到许多其他方法来处理这些要求。

我没有遇到更改继承行、添加名称空间或添加导入/使用语句的问题。如果您需要执行这三项中的任何一项,您将找不到许多其他方法来处理这些需求。

我在我的C#项目中一直在更改它们。。。通常,这是最简单的方法,可以将您曾经在designer中完成的某件事情复制到类似的表单中,并且您希望以不同的表单完成相同的事情。VisualStudio完全能够读入您的更改并将其合并到设计器中。我真的不知道为什么有评论说不要编辑它。我的建议是确保您使用源代码管理,继续编辑它,测试它,如果它有效,很好,如果不行,您可以随时退出您的编辑。

我在我的C#项目中一直在更改它们。。。通常,这是最简单的方法,可以将您曾经在designer中完成的某件事情复制到类似的表单中,并且您希望以不同的表单完成相同的事情。VisualStudio完全能够读入您的更改并将其合并到设计器中。我真的不知道为什么有评论说不要编辑它。我的建议是确保你使用源代码管理,继续编辑它,测试它,如果它有效,很好,如果不行,你可以随时退出编辑。

不。修改生成的文件从来都不是一个好主意。

不。修改生成的文件从来都不是一个好主意。

设计器文件是非常简单的代码;在这里,您通常会发现使问题复杂化(但只是稍微复杂化)的唯一一件事是文件顶部和底部的BeginInit/EndInit调用——在这两者之间,代码相当宽容

*也就是说,不要将任何只在运行时执行的代码放入其中。任何依赖于运行时的代码都会在设计时失败,因此尝试在设计视图中打开控件将导致崩溃。它曾经给你一个该死的红屏,但我不确定IDE现在没有什么效果——但是如果事情突然爆发,通常的技巧无法解决问题,那么试着删除你的自定义部分

进一步说明(不是为了吓唬您,而是希望避免我们遇到的一些困难),如果您的代码不是当前构建的解决方案/项目的一部分,那么确定代码是否在运行时执行或设计时执行的方法通常会失败


因此,为了让大家了解这一切,简单的UI布局/winforms修改完全可以在设计器代码中手工完成。数据绑定和外部依赖(调用第三方控制库除外)应谨慎处理。

设计器文件是非常简单的代码;在这里,您通常会发现使问题复杂化(但只是稍微复杂化)的唯一一件事是文件顶部和底部的BeginInit/EndInit调用——在这两者之间,代码相当宽容

*也就是说,不要将任何只在运行时执行的代码放入其中。任何依赖于运行时的代码都会在设计时失败,因此尝试在设计视图中打开控件将导致崩溃。它曾经给你一个该死的红屏,但我不确定IDE现在没有什么效果——但是如果事情突然爆发,通常的技巧无法解决问题,那么试着删除你的自定义部分

进一步说明(不是为了吓唬您,而是希望避免我们遇到的一些困难),如果您的代码不是当前构建的解决方案/项目的一部分,那么确定代码是否在运行时执行或设计时执行的方法通常会失败


因此,为了让大家了解这一切,简单的UI布局/winforms修改完全可以在设计器代码中手工完成。数据绑定和外部依赖项(调用第三方控制库除外)应谨慎处理。

这是一个公平的经验法则,但设计器文件的内容可以安全地更改,前提是您正在进行与设计时兼容的修改。一些生成的文件将丢弃您的更改(如为数据集生成的代码文件),但设计器将保留您的更改(尽管它将重新格式化和重新排列这些更改,但代码的本质保持不变)。这总是很危险的。设计师的假设没有记录在案。做一些稍微不同的事情,它会消除你的改变。从.NET 1.0开始我就一直在处理这个问题,我强烈建议不要更改这些文件。我不知道你们对designer文件做了什么,但我从来没有遇到过手动修改的问题。这是一个公平的经验法则,但是设计器文件的内容可以安全地更改——前提是您正在进行与设计时兼容的修改。一些生成的文件将丢弃您的更改(如为数据集生成的代码文件),但设计器将保留您的更改(尽管它将重新格式化和重新排列这些更改,但代码的本质保持不变)。这总是很危险的。设计师的假设没有记录在案。做一些稍微不同的事情,它会消除你的改变。我从.NET 1.0开始就一直在处理这个问题,我强烈建议不要更改这些文件。我不知道你们对设计器文件做了什么,但我从未遇到过手动修改的问题。克里斯,谢谢你们的回答…哟