winforms 如何避免在 *.designer.cs和 *.resx中进行不必要的更改?

vsmadaxz  于 2022-11-16  发布在  其他
关注(0)|答案(2)|浏览(195)

由于某些原因,Visual Studio winforms设计器经常对窗体设计器文件和相应的resx进行单调的更改。
目前为止最烦人的是:

  • 控件声明/初始化顺序的更改
  • 对某些控件大小的更改(最明显的是菜单项宽度)
  • 对嵌入到资源中的序列化图像的更改(...等等,什么???)

这些变更不会影响表单/使用者控件的功能或外观,但会在原始档控制中造成许多干扰,使得合并几乎不可能,或需要容易发生错误的手动修正,以消除所有实际变更附注的变更,直到设计工具的下一个变更为止。
有什么想法如何防止工作室从它?

ercv8c1e

ercv8c1e1#

请尝试使用右键锁定控件,然后在窗体/用户控件上选择“锁定控件”。

不幸的是,无法将生成代码中的“有用”更改与来自控件设计器错误或内部工作的“污染”区分开来。
如果锁控制功能由于某种原因无法工作,我们就无能为力了,除了那些可怕的黑客攻击:

  • 创建并完成窗体后,将生成的代码(InitializeComponent方法和声明)移出.designer.cs。Visual Studio将不再触及它。缺点是您将不再具有可视支持。
  • 将.designer.cs文件标记为只读将阻止Visual Studio尝试更改它。这有时可能会导致Visual Studio控件设计器出现故障,但它会使您的.designer.cs保持不变。

还有一种方法是 * 根本不使用设计器 *。这导致了一种采用winforms编程的新方法,因为您将提供代码来初始化具有属性和事件的控件。
它并不像看上去那么巨大和丑陋:使用可重用的模式和OO特性会非常令人愉快,一些对齐良好的方法调用比隐藏在. designer. cs文件中的一些可怕的代码要好。
当然不会有视觉化的支援,但是您可以在设计模式中将控件加入至空的容器,以查看它的外观。

8ehkhllq

8ehkhllq2#

据我所知,您已经编辑了.designer.cs文件。从某个Angular 来看,这是可以的,我想我们都是这样做的。但是,那里有一个明确的通知“文件是自动生成的,不要更改它”。所以Visual Studio给您一个警告,如果您编辑它,事情可能不会总是顺利的。这是设计的。虽然这些自动更改可能不会给您的应用程序带来麻烦,它们有时会这样做(例如,设置控件的宽度和高度,该控件应根据上下文更改其宽度和高度,如果您有多语言应用程序,这始终是必要的)。
所以如果你不喜欢垃圾,你就不要使用设计器,因为它会产生垃圾,这就是它的工作原理。或者你从它开始,在某个时候决定再也不打开它,然后做你的清洁工作。
或者你去WPF,它满足你的要求,是时候让WinForms成为传统了,在某个时候对它的支持肯定会结束。

相关问题