2012-01-26 27 views
3

有沒有一種方法來自動化該屬性的集合?我們有數百個需要進行本地化的表單,這將成爲一個噩夢,通過所有這些表單將此屬性設置爲true。設置我所有表單的Localizable屬性

有沒有辦法讓Visual Studio在解決方案/項目中將所有表單設置爲Localizable = true?

+0

子類形式,然後找到並替換? –

+3

它不是.NET Form類的一部分,它是一個visual studio屬性 – Pacman

回答

1

它通過類似條目表示如下(調整.NET Framework版本)在窗體的.resx文件:

<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> 
    <value>True</value> 
</metadata> 

自動切換所有的值設置爲true很可能是運行的最簡單方法通過Form子類文件,將它們的.resx文件加載爲XML,以測試元素的存在,如果不存在,則添加它。或者,您可以使用ResXResourceReader和ResXResourceWriter來讀取和寫入文件內容。

+0

我嘗試過手動,並且它不像您期望的那樣工作。 – Pacman

+0

你的預期有什麼不對?如果在將元數據元素添加到.resx文件後在設計器中打開表單,您是否在表單的屬性表中看到Localizable屬性的值爲true或false? –

+0

仍顯示爲假 – Pacman

4

當您創建新的Windows窗體時,它沒有* .resx文件以及在designer.cs文件中的相關代碼。當您將Form的Localizable屬性設置爲True時,VS將以下代碼添加到designer.cs中,但它也會生成並添加* .resx文件。

 System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form2)); 
     this.SuspendLayout(); 
     // 
     // Form2 
     // 
     resources.ApplyResources(this, "$this"); 
     this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 
     this.Name = "Form2"; 
     this.ResumeLayout(false); 

由於VS添加了* .resx文件,因此無法找到並替換或剪切並粘貼代碼。

我試圖記錄VS宏然而,它自動,也不會記錄更改本地化屬性設置爲True(不知道爲什麼)

這個臨時宏,也許你一個開始。你可以寫下你的表單文件名列表,並用下面的宏代碼循環它們。

DTE.Windows.Item(Constants.vsWindowKindSolutionExplorer).Activate() 
    DTE.ActiveWindow.Object.GetItem("WindowsFormsApplication1\WindowsFormsApplication1\Form3.cs").Select(vsUISelectionType.vsUISelectionTypeSelect) 
    DTE.ActiveWindow.Object.DoDefaultAction() 
    DTE.Windows.Item(Constants.vsWindowKindProperties).Activate() 
相關問題