【问题标题】:Visual Editor renaming a variable可视化编辑器重命名变量
【发布时间】:2018-05-31 16:05:05
【问题描述】:

在 .Designer 文件中,我有一个 DataGridViewCellStyle

System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStylePhoto = new System.Windows.Forms.DataGridViewCellStyle();
this.photoDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStylePhoto;

每当我在可视化编辑器中更改一些与此无关的内容时,它都会坚持这样重命名:

System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
this.photoDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle1;

为什么?我怎样才能防止这种情况发生?

【问题讨论】:

  • 他们总结性地告诉我们“设计器支持所需的方法 - 不要使用代码编辑器修改此方法的内容。”您是否在 Designer.cs 中编辑某些内容并在 [design] 中执行其他操作?
  • 你无法阻止它。
  • @Amit:无论如何都会发生。直接在源代码中编辑或使用[设计]中的可视化编辑器
  • 为什么不在普通的代码隐藏文件中改变它呢?这永远不会被覆盖,不像设计器每次都会重新生成。
  • @Alejandro 那么你将失去设计时支持。

标签: c# .net winforms windows-forms-designer


【解决方案1】:

在 .Designer 文件中,我有一个 DataGridViewCellStyle ... 每当我在 Visual 编辑,它坚持要改名……

为什么?

每当您在表单设计器中更改任何内容时,InitializeComponent 方法的全部内容都会重新生成。这就是 Windows 窗体设计器的工作方式。

对于IComponent的所有实现,生成代码中的变量名将与组件名相同。

我该如何防止这种情况发生?

没有简单的方法来保持DataGridViewCellStyle 的变量名,因为它不是IComponent 的实现,并且设计器不存储有关其名称和变量名称的任何信息是即时生成的。

【讨论】:

  • 有一些解决方案可以在代码生成时改变设计者的行为,包括注册一个新的CodeDomeSerializer。有关更多信息,您可以查看Customizing Code Generation in the .NET Framework Visual Designers。但实际上,正如我所提到的,没有简单的方法可以在不改变一些事情的情况下防止这种行为。
  • 对我来说它似乎是 XY Problem 并且您不应该对该名称有任何依赖关系,无论如何我提供了您问题的答案,但是您可能不喜欢这个答案 ;)
  • 这里的问题不在于名称。问题是它会弄乱版本控制历史,使得真正的变化更难看到,而 VS 坚持要解决这个问题。或者 - 在每次提交之前进行人工劳动,以使用差异查看器删除无意义的更改。
猜你喜欢
  • 1970-01-01
  • 2011-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多