1
用戶更改了選項窗口中的語言後,更改我的UI字符串時出現問題。要更改主窗體的UI字符串,我必須每次重新啓動程序,以使更改生效,但這很煩人。所以我試着用委託來調用函數,它在保存新設置後在選項窗口中加載主窗口的字符串。該功能在選項窗口中調用,但不會更改主窗口的字符串。更改設置後重新加載UI語言字符串
代碼在主窗口
public delegate void CallLoadUIStrings(SupportedLanguages lang);
public CallLoadUIStrings callLoadUIStrings;
public Renamer()
{
callLoadUIStrings = new CallLoadUIStrings(LoadUIStrings);
}
public void LoadUIStrings(SupportedLanguages lang)
{
try
{
switch (lang)
{
#region "DE/JA/FR/ES/NL"
case SupportedLanguages.De:
case SupportedLanguages.Ja:
case SupportedLanguages.Fr:
case SupportedLanguages.Es:
case SupportedLanguages.Nl:
// reads the language file where the ui strings are stored
langHelper.Read(RenamerLangOpener.RenamerMainWindow);
this.mnuFile.Text = langHelper.Files;
this.mnuClose.Text = langHelper.Close;
this.mnuEdit.Text = langHelper.Edit;
this.mnuUndo.Text = langHelper.Undo;
this.mnuCut.Text = langHelper.Cut;
this.mnuCopy.Text = langHelper.Copy;
this.mnuPaste.Text = langHelper.Paste;
this.mnuDelete.Text = langHelper.Delete;
this.mnuSelectAll.Text = langHelper.SelectAll;
#endregion
}
}
catch (Exception ex) { //exception handling }
}
private void mnuOpt_Click(object sender, EventArgs e)
{
Preferences opt = new Preferences(this);
opt.ShowDialog();
}
代碼在選項窗口
internal Renamer instance = null;
public Preferences(Renamer form)
{
instance = form;
}
public void UpdateUI()
{
langHelper.ReadSettingsValues();
instance.BeginInvoke(instance.callLoadUIStrings,new object[] { langHelper.GetLang});
}
因爲我從來沒有與代表工作,我沒有線索,那裏的錯誤是。 我已經搜索了很多以找到類似問題的解決方案,但我還沒有找到符合我的問題的東西。
你可以顯示打開首選項窗體的代碼嗎? –
private void mnuOpt_Click(object sender,EventArgs e) { Preferences opt = new Preferences(this); opt.ShowDialog(); } – klose91