防止Visual Studio更新Form.Designer.cs中的特定行

本文关键字:cs Designer Visual Studio 更新 Form 防止 | 更新日期: 2023-09-27 17:50:32

我想知道是否有可能阻止Visual Studio更新由我更改的特定行?例如,我有单独的资源项目(图像,声音等)。我改变了Form.Designer.cs中的一些行,并使所有图像都从资源dll中加载。但是一旦我更新表单,它自己的一切都回到默认值,所有的资源被使用的表单被复制到表单。resx文件。
我怎么解决这个问题?

防止Visual Studio更新Form.Designer.cs中的特定行

如文件开头所述,*.Designer.*是一个自动生成的文件。每次保存它所依赖的文件时,它都会被重新构建,所以您不应该更改任何不希望混乱的代码。

最好将表单设计器生成的代码与您想要控制的代码分开。然后可以在表单的构造函数中处理需要处理此代码的顺序。例子:

namespace FormTest
{
    public partial class Form1 : Form
    {
        private Label PostAddedLabel;
        public Form1()
        {
            InitializeComponent();
            PostInitializeComponents();
        }
        private void PostInitializeComponents()
        {
            if (!this.DesignMode)
            {
                PostAddedLabel = new Label();
                PostAddedLabel.Left = 100;
                PostAddedLabel.Top = 30;
                PostAddedLabel.Text = "The Post-added Label";
                this.Controls.Add(PostAddedLabel);
            }
        }
    }
}

我们可以简单地在设计器中设计表单,在成功的设计阶段之后,我们可以将声明、赋值和相关的代码移动到PostInitializeComponents方法中。

使用!this。设计模式决定时,窗体将在运行时模式下显示分离的控件。当处于设计器模式时,这些控件将不会显示,以确保系统在设计表单时不会影响这些控件。

如果你也想在用户控件中使用这种方法,试着从下面的文章中嵌入"IsDesignerHosted"方法在"DesignMode"之上:

希望这能回答问题?

No。Visual Studio不会"更新"设计器文件,而是删除它并写入一个全新的副本。没有办法做你想做的。

你应该把你的代码添加到你的代码后面。这是同一个类