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.cs
和 Form.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";
}
以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.cs
和 Form.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";
}