【发布时间】:2017-04-18 08:13:29
【问题描述】:
我正在进行棕地开发,并且必须处理许多带有类似这样代码的旧表单。
//
// Button1
//
Button1.Location = new System.Drawing.Point(556, 447);
Button1.Name = "Button1";
Button1.Size = new System.Drawing.Size(136, 23);
Button1.TabIndex = 112;
Button1.Text = "Restart kontor";
Button1.Click += Button1_Click;
如果我尝试编辑其中一个表单,则会升级该表单。然后,所有标识符都将在前面加上“this”限定符。不幸的是,Visual Studio 2015 也将简单地删除文件中的所有事件处理程序分配。这意味着上面示例中的最后一行 sn-p 将简单地消失。
为什么会这样?有没有很简单的方法可以预防?
我找到了一种解决方法,可以相当快地完成每个表单。解决方法作为答案发布。它将我将这些表单升级的工作从几天缩短到几个小时。
如果有人知道更快的方法,也许是正确的解决方法,我想知道。
【问题讨论】:
-
您是如何尝试编辑表单的——在设计器中,还是通过手动编辑设计器生成的代码?什么首先添加了该事件处理程序? (我认为设计器通常使用委托创建表达式,尽管我可能是错的。)永远不要手动编辑设计器生成的代码,除非你打算永远不再使用设计器 - 设计器“拥有”该代码,并且 将撤消您对其所做的更改。
-
表格没有被手动编辑。这是 Visual Studio 中的一个错误。
-
那么是什么生成了
Button1.Click += Button1_Click;代码?我认为我没有看到任何生成该代码的 VS 版本。如果你说是VS生成的,你知道具体是哪个版本吗? -
这确实是老源。不知道几岁了,但是很多表格都没有设计器源文件。相反,它都在一个文件中。不知道这是否能说明最古老部分的年龄。
-
是的,这表明 VS2002/VS2003 - 这也表明手动添加代码 是完全可行的。不能不看源码历史吗?