當前我正在開發一個簡單的多語言應用程序。此應用程序有兩種形式:已關閉的窗體的更新語言
表1:選擇語言(英語&意大利)
表2:歡迎消息
Form1.cs的
private void button1_Click(object sender, EventArgs e)
{
Assembly a = Assembly.Load("LanguageManagement");
ResourceManager rm = new ResourceManager("LanguageManagement.Language.English", a);
Class1 lang = new Class1();
lang.Language(rm);
}
private void button2_Click(object sender, EventArgs e)
{
Assembly a = Assembly.Load("LanguageManagement");
ResourceManager rm = new ResourceManager("LanguageManagement.Language.Italian", a);
Class1 lang = new Class1();
lang.Language(rm);
}
}
當用戶按下按鈕1(英文),使用英文資源管理器,並調用Class 1。
class Class1
{
public void Language(ResourceManager rm)
{
Form1 form1 = (Form1)Application.OpenForms["Form1"];
form1.label1.Text = rm.GetString("_Name");
form1.label2.Text = rm.GetString("_Surname");
form1.label3.Text = rm.GetString("_Age");
form1.button4.Text = rm.GetString("_Enter");
//Form2 form = new Form2();
Form2 form = (Form2)Application.OpenForms["Form2"];
form.label1.Text = rm.GetString("_Welcome");
}
}
如果用戶不選擇顯示以下錯誤的語言之前打開窗體2:
型「System.NullReferenceException」未處理的異常發生在LanguageManagement.exe 其他信息:對象引用未設置爲對象的實例。
如何更新form2的語言,即使它從未打開過?
謝謝:)
使用調試器,其變量或字段爲空? – ClickRick
如果'Form2'沒有打開,你不能打開它,然後設置歡迎消息。 – Scrobi
我需要更新2個窗體的所有文本...即使form2永遠不會打開。 – Draco0013