resx、designer 和cs 文件如何在表单内传递值?

How resx, designer and cs file pass values within the form?

以Windows形式。 form.resx

中有一个xml数据
<data name="$this.Text" xml:space="preserve">
  <value>Report</value>
</data>

所以在form.designer.cs

public System.Windows.Forms.ListView report;
private void InitializeComponent()
{
this.report.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.report_ColumnClick);
}

在form.cs

private void report_ColumnClick(Object eventSender, ColumnClickEventArgs eventArgs)
        {
            if (this.Text != "Report")
            {
                //Some code
            }
        }

问题是 form.resx 中的值如何在 form.cs 中得到识别。 this.text 如何在设计器和 cs 文件中得到识别

Form.csForm.designer.cs 之间的关系由 class 的名称和 partial 关键字决定。

你可以把class分成多个部分或文件,只要你给class一个相同的名字,并在它前面加上partial关键字,编译时编译器会看到这个作为一个大 class.. 例如

Forms.cs文件

partial class Form
{
 //contain all the implementation code for the form
 //all the code added by the programmer
}

Form.designer.cs文件

partial class Form
{
// contains all the auto generated code
// contains the InitializeComponent() method
}

编译时,编译器会将上述两个文件视为 Form 的 1 class。

至于 .resx 文件,see this answer

.resx 文件还有助于 Visual studio 在设计时跟踪要在设计时显示的值。

如果您想更改代码中的 this.Text,可以在表单 Load 事件中进行。 例如

private void Form1_Load(object sender, EventArgs e)
{
    string oldText = this.Text; //oldText will be 'Report' or 'Form1'
    this.Text = "whatever you want it to be";
}