基於WinForm的多語言開發之介面載入

2021-05-23 01:31:15 字數 2080 閱讀 8780

在「基於winform的多語言軟體開發」一文中,說明載入統一載入資源檔案和動態重新整理介面的方法,現在使用上篇文章中介紹的方法,怎樣來快速開發介面。

對資源的的載入有兩種方法,一種是用虛擬方法直接載入資源到介面控制項中,另一種是用反射的方式來進行載入,這種方式需要一些編輯技巧。

定義下面的基類:

public class 

formbase : form

}
void languagehelper_languagechanged(object sender, languagechangedeventargs e)
}
protected override void onclosed(eventargs e)
base.onclosed(e);
}
// resharper disable inconsistentnaming
protected virtual void loadresourceui()

// resharper restore inconsistentnaming
在子類中過載方法

protected override void loadresourceui()
實際執行中如下圖所示:

下面我以第二種方法來實現介面載入,首先要求對控制項的名稱進行統一命名:

如label 以lbl開頭

button 以btn開頭

設定這樣的編碼規範後,還要對資源檔案的製作進行限制:

如下面視窗中對控制項命名如下:

private system.windows.forms.button btnaddform;
private system.windows.forms.label lbllanguage;
對資源檔案的命名如下:

通過如下幫助類,進行資源載入,**如下:

public static class 

freshui

internal static void freshuicontrol(control c)
else
else
}
foreach (control control in c.controls)
}
internal static t getresourceobject

(string name,

string prefix)

}
}
return default(t);
}
private static string fixname(string name, string prefix)
return name;
}
}
public abstract class 

process

: iprocess

where t : system.windows.forms.

control

processt((t)t);
}
public abstract void processt(t t);
}
public inte***ce 

iprocess

public class 

formprocess : process

基於WinForm的多語言軟體開發

現在開發多語言的軟體方法比較多,使用資源或自定義的xml檔案來儲存選單字串資訊都是比較好的形式。現在我就來分享一下,我最近在做多語言開發的一些經驗。對於winform程式開發中,如果當前開啟多個視窗,就關係到在選中語言變化時,怎樣來通知所有視窗語言已經變化,應該重新重新整理介面。我在實踐採取思路是,...

WinForm程式的介面多語言切換

資源檔案在國際化中的運用 winform 國際化的軟體往往需要多種語言資源,如何在c 的winform中做到呢?且看以下分解 1 工程新增資源檔案 資源檔案命名方式 資源檔案主題名 語言區域.resx 例如資源檔案主題名為 resource1 我們準備了 中 英 日 三個語言版本的資源檔案,則對應的...

WinForm多語言版本實戰專案演練

關於如何實現 winform多語言版本 網上有很多實現技術方案,可以說是 琳琅滿目 包羅永珍 俗話說的好 一千個讀者就有一千個哈姆雷特!如果您工作中恰好也遇到這種開發需求,但是為了乙個自上手簡單 維護方便 擴充套件性強的winform多語言版本技術方案而感到煩惱的話,那麼很高興恭喜你看到了阿笨的本次...