Как заменить жестко закодированную строку для текста метки в *.Designer.cs C#?
Как правильно заменить жестко закодированную строку для меток в Form1.Designers.cs?
Вместо:
this.button1.Text = "TheButton";
this.label1.Text = "TheLabel";
Я хочу написать:
this.button1.Text = Resources.ButtonText;
this.label1.Text = Resources.LabelText;
После изменения формы в визуальном конструкторе (добавление любого компонента и сохранение) генератор кода VS возвращает текст метки в жестко закодированную строку:
this.button1.Text = Resources.ButtonText;
this.label1.Text = "TheLabel";
Кто-нибудь знает, как решить эту проблему?
3 ответа
Решение
Запретить автоматическое изменение кода в Designer.cs для конкретной строки
using System;
using System.Windows.Forms;
namespace Test
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.button1.Text = Resources.ButtonText;
}
}
}
Самым простым было бы сделать свой собственный Button
/Label
где это берет его Text
собственность от Resources
:
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;