如何阻止VS Designer弄乱我现有的代码

时间:2010-12-01 14:38:50

标签: c# visual-studio winforms

每次我移动到Designer View我的整个designer.cs代码搞砸了: VS Designer重新组织代码块并添加一些刺激性的详细前缀,如“this.whatever” 并使用“System.Windows.Forms.whatever”完全限定对象 我知道“Designer.cs”并不打算进行编辑,但我需要不时地进行一些GUI代码定制,并希望在我更改它们时保留它们。

如何避免? (猜猜这对VS来说太酷了)

(实际上我只是避免使用设计师而是手工制作,这是一种古老的方式)

更新:
我很惊讶地看到这个问题的群体反应。对不起,如果它令人不安,但有趣的是看到,在击中我之前说“不要这样做,它是坏的”,没有人问为什么我想这样做。
恕我直言的问题是相关的,这就是为什么:许多“自动生成”的代码都是垃圾,绝对没有用,它确实需要一些增强。一个例子(在soooo很多其他人中):为什么在控件的Dock模式设置为Fill时生成Size / Location属性?我想利用没有提取的好处。
无论如何,我会保留简短的答案:你把它全部拿走(带垃圾)或者全部保留。

3 个答案:

答案 0 :(得分:10)

这很简单:不要编辑设计器代码。这些警告是有原因的,并且要使Visual Studio正常工作,它需要拥有该文件。

这是一个部分类:您需要做的一切,您可以在该类的匹配非设计器文件中执行;这包括您的所有控制声明和其他内容。因为你试图完全避开设计师,所以让visual studio拥有该文件,只需将所有内容放在普通的.cs文件中。

<强>更新 根据评论,我想添加以下内容 -
要么使用设计师,要么不使用设计师。不要因为它而感到沮丧。如果你正在使用并依赖设计师做某些事情,你 必须 单独留下设计师的文件。

如果你要避开设计师,那么真的要避开设计师。 Everything 它可以在你自己的代码中完成(当然除了可视队列,但即便如此,通过原型设计也可以做得更好)。您甚至可以为部分类创建自己的附加文件,以保留类似设计器的代码。

如果你只是使用设计师作为偶尔的代码生成器来帮助减少一些无聊的输入,可以在单独的项目中或在现有项目中的丢弃表单上进行,只需复制/粘贴代码即可。 / p>

答案 1 :(得分:3)

设计师应该只在FormName.Designer.cs 中编写您不应该触及的代码。 Visual Stuiod声明了一个在两个文件中实现的部分类 - 一个用于设计器,一个用于代码。听到设计师正在重写非设计师档案,我会感到惊讶。

如果这没有帮助。请详细说明您正在使用的VS版本,正在重写的文件以及这些文件的哪些部分。

答案 2 :(得分:0)

您始终可以通过将自定义代码放在另一个cs文件中来扩展设计器类。设计者无法触及,编译器会将您的添加内容编译到该类。如果您正在执行类似添加属性或方法的操作,则可以轻松完成:

// MyWinformExtension.cs
partial class MyWinformName
{
    public string Foo { get; set; }

    public void ProcessData()
    {
        // do some processing..
    }
}

瞧!这就是你添加自己的代码的方式。您无法更改设计器代码,因为它将由IDE重新编写。这就是为什么源中有警告以及为什么其他人都在告诉你同样的事情。