有線了我試圖本地化多語言WinForms應用程序。我試圖找到一種方法來設置我的表單標籤/按鈕文本屬性從設計器中的資源文件中讀取(而不是必須維護一個編程設置它們的代碼塊)。的WinForms字符串資源文件中,設計師
我發現我可以設置form.Localizable =真,但隨後的資源從旁邊的表格文件中讀取,但許多煤礦在多個形式共享。
有什麼辦法來設置在設計師一個標籤的文本,存儲在項目級的resx文件中的值?
有線了我試圖本地化多語言WinForms應用程序。我試圖找到一種方法來設置我的表單標籤/按鈕文本屬性從設計器中的資源文件中讀取(而不是必須維護一個編程設置它們的代碼塊)。的WinForms字符串資源文件中,設計師
我發現我可以設置form.Localizable =真,但隨後的資源從旁邊的表格文件中讀取,但許多煤礦在多個形式共享。
有什麼辦法來設置在設計師一個標籤的文本,存儲在項目級的resx文件中的值?
要回答這個問題,
但海事組織,這不應該反正做,如果文本將是靜態的。
有我的答案讀本地化和資源:
Resource string location
Globalize an existing Windows Forms application
Using .resx files for global application messages
我能想到的唯一方法是創建一個自定義控制,將增加一個屬性的資源名稱。在設置屬性時,從項目資源文件中獲取值並使用它設置文本屬性。您需要確保文本不會被序列化,或者它可能會覆蓋由ResourceName設置的值。
public class ResourceLabel
: Label
{
private string mResourceName;
public string ResourceName
{
get { return mResourceName; }
set
{
mResourceName = value;
if (!string.IsNullOrEmpty(mResourceName))
base.Text = Properties.Resources.ResourceManager.GetString(mResourceName);
}
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public override string Text
{
get { return base.Text; }
set
{
// Set is done by resource name.
}
}
}
我想過類似的東西,但是這似乎比每個文件有一個resx或在代碼中設置它們更令人討厭 我很失望,似乎沒有內置方式來做到這一點,似乎只是從Localizable屬性存在的一個小調整,只是它也需要一個Resx文件屬性!:( – 2009-12-04 11:04:58
我想我找到了一個辦法做到這一點!
首先在Resources.resx設置訪問修飾符公共。
之後在設計師生成的代碼(Form.Designer.cs)可以寫爲適當的控制:
this.<control>.Text = Properties.Resources.<stringname>
例如:
this.footerLabel.Text = Properties.Resources.footerString;
ps.:I別不知道這個解決方案有多麼道德,但它起作用!
這正是我試圖避免:(「而不是必須維護一個以編程方式設置它們的代碼塊「 – 2013-02-01 18:43:40
設計師在做這件事後需要什麼?儘量在代碼中做到這一點。 – Walter 2009-12-04 13:47:21
你有沒有這個運氣?我也需要這個。我希望我的所有表單都綁定到單個資源文件。 – 2009-12-09 11:31:22
可悲的是沒有。我用代碼連接了很多東西:( – 2009-12-11 12:10:03