如何将资源文件中的原始 this.text 与覆盖的文本进行比较
How to compare original this.text from resource file to an overwritten text
我有一个 windows 表格。每次命中一段代码时,标题都会被覆盖。
在被覆盖之前,标题将默认在表单的 resx 文件中。
Form1.resX
<data name="$this.Text" xml:space="preserve">
<value>Report</value>
</data>
Form2.cs
public void Report2()
{
Form1 frm = new Form1();
frm.Text="Report2"
//Some code
}
public void Report3()
{
Form1 frm = new Form1();
frm.Text="Report3"
//Some code
}
此处 this.Text
在 Report2()
和 Report3()
执行时被覆盖
在Form1.cs
private void Report_ColumnClick(Object eventSender, ColumnClickEventArgs eventArgs)
{
if(this.Text!="Report")
{
//Some code
}
}
所以在 Form1.cs 中,我对 resx 原始值进行硬编码以与覆盖值进行比较。
无论如何我可以动态地做而不是硬编码。
我不确定 this question 是否与您的相同?
据此 post 它应该很简单:
ResourceManager rm = new System.Resources.ResourceManager(typeof(Form1));
string formText = rm.GetString("Form1.Text");
或:
如果这不起作用,您可以尝试从程序集中嵌入的清单中读取信息。
使用反射获取嵌入的资源名称typeof(Form1).Assembly.GetManifestResourceNames();
这将为您提供一个名称列表(如果有的话)。
使用正确的名称提取嵌入流。
var resourceStream = typeof(Form1).Assembly.GetManifestResourceStream("Your_NamesPace_Here.Form1.resources");
using (System.Resources.ResourceReader resReader = new ResourceReader(resourceStream))
{
var dictEnumerator = resReader.GetEnumerator();
while (dictEnumerator.MoveNext())
{
var ent = dictEnumerator.Entry;
//ent will be a key:value pair, so use it like this
if (ent.Key as string == "$this.Text")
{
string originalFormName = ent.Value as string;
}
}
}
我有一个 windows 表格。每次命中一段代码时,标题都会被覆盖。 在被覆盖之前,标题将默认在表单的 resx 文件中。
Form1.resX
<data name="$this.Text" xml:space="preserve">
<value>Report</value>
</data>
Form2.cs
public void Report2()
{
Form1 frm = new Form1();
frm.Text="Report2"
//Some code
}
public void Report3()
{
Form1 frm = new Form1();
frm.Text="Report3"
//Some code
}
此处 this.Text
在 Report2()
和 Report3()
执行时被覆盖
在Form1.cs
private void Report_ColumnClick(Object eventSender, ColumnClickEventArgs eventArgs)
{
if(this.Text!="Report")
{
//Some code
}
}
所以在 Form1.cs 中,我对 resx 原始值进行硬编码以与覆盖值进行比较。 无论如何我可以动态地做而不是硬编码。
我不确定 this question 是否与您的相同?
据此 post 它应该很简单:
ResourceManager rm = new System.Resources.ResourceManager(typeof(Form1));
string formText = rm.GetString("Form1.Text");
或:
如果这不起作用,您可以尝试从程序集中嵌入的清单中读取信息。
使用反射获取嵌入的资源名称typeof(Form1).Assembly.GetManifestResourceNames();
这将为您提供一个名称列表(如果有的话)。
使用正确的名称提取嵌入流。
var resourceStream = typeof(Form1).Assembly.GetManifestResourceStream("Your_NamesPace_Here.Form1.resources");
using (System.Resources.ResourceReader resReader = new ResourceReader(resourceStream))
{
var dictEnumerator = resReader.GetEnumerator();
while (dictEnumerator.MoveNext())
{
var ent = dictEnumerator.Entry;
//ent will be a key:value pair, so use it like this
if (ent.Key as string == "$this.Text")
{
string originalFormName = ent.Value as string;
}
}
}