如何替换*.Designer.cs C#中标签文本的硬编码字符串?

如何替换*.Designer.cs C#中标签文本的硬编码字符串?,c#,visual-studio,hardcode,C#,Visual Studio,Hardcode,如何正确替换Form1.Designers.cs中标签的硬编码字符串 而不是: this.button1.Text = "TheButton"; this.label1.Text = "TheLabel"; 我想写: this.button1.Text = Resources.ButtonText; this.label1.Text = Resources.LabelText; 在visual designer(添加任何组件并保

如何正确替换Form1.Designers.cs中标签的硬编码字符串

而不是:

        this.button1.Text = "TheButton";
        this.label1.Text = "TheLabel";
我想写:

        this.button1.Text = Resources.ButtonText;
        this.label1.Text = Resources.LabelText;
在visual designer(添加任何组件并保存)和代码生成器中更改表单后,将标签文本返回到硬编码字符串:

        this.button1.Text = Resources.ButtonText;
        this.label1.Text = "TheLabel";
有人知道如何解决这个问题吗?


最简单的方法是制作您自己的
按钮
/
标签
,它从
资源
获取其
文本
属性:

class MyButton: Button
{
    // put here attributes to stop its serialization into code and displaying in the designer
    public new string Text
    {
        get {return base.Text;}
        set {base.Text = value;}
    }

    public MyButton() : base()
    {
        base.Text = Resources.ButtonText;
    }
}

刚刚在designer.cs文件中找到了防止引用反转的解决方案

而不是

this.label1.Text = MyNamespace.Properties.Resources.gui_lable1_text;
成功

this.label1.Text = global::MyNamespace.Properties.Resources.gui_lable1_text;

所以你写
Resources.LabelText
和VS将其返回到
“标签”。是这样吗?是的,它发生在设计器中更改表单之后。将其放入表单构造函数中。设计器将重新生成代码并删除您的更改。Autogenerator不会删除按钮文本的替换。i、 e.this.button1.Text=Resources.ButtonText在设计器中更改表单后仍然保留。这对我来说不是一个好的解决方案。我想在designer中看到标签的文本,而且我不想复制任何代码。对于按钮,替换硬编码字符串非常有效,但对于标签则不行。很遗憾,我没有找到更好的解决方案。
this.label1.Text = global::MyNamespace.Properties.Resources.gui_lable1_text;