2009-05-18 53 views
1

如何在我的.designer.cs文件中引用常量字符串?如何在C#designer.cs代碼中使用常量字符串?

一個簡單的答案是在我的.cs文件中創建一個私有字符串變量,然後編輯designer.cs文件以使用此變量而不是硬編碼該字符串。但設計師不喜歡這會引發錯誤。我明白爲什麼這不起作用,但我不確定最好的選擇是什麼。

我的每個UI控件應該只有文本作爲佔位符,那麼我只需要在運行時覆蓋所有文本屬性?這樣我就失去了看到設計師中所有東西的好處。

我只是想在未來事情發生變化時如何造成最小的中斷。謝謝。

回答

5

*.designer.*文件由Visual Studio生成。除非你真的必須手動修改它們,否則Visual Studio有時可能會生成-生成它們並刪除所做的更改。

你真正需要做的是您的常量字符串要提供給窗體設計器,這樣當它生成的代碼,它使用的是資源的資源的想法。

有幾種方法可以在Visual Studio中完成此操作。最簡單的可能是通過控件的數據綁定。爲了演示,在表單上放置標籤控件並查看控件的屬性。如果按名稱對屬性進行排序,則括號中將包含列表頂部的兩個屬性:ApplicationSettingsDataBindings。如果您將這些內容拉下來,您會發現它們都可以選擇綁定到您的標籤的Text屬性。使用這些,您可以將您的「常量字符串」放入您的應用程序的設置文件中,並通過ApplicationSettings屬性或任何數據源綁定,並通過DataBindings屬性將其綁定。然後表單設計人員會爲您生成相應的代碼。

4

這並不完全清楚,我你想要什麼來實現的,但一般來說,如果你想避免弦都被硬編碼到設計cs文件,您可以使用該字符串將被加載的資源文件從啓動。

如果您設置窗體的「本地化」屬性爲「真」我相信一切都會在資源自動結束。另一方面,我遠離Windows Forms的專家,所以把所有這一切用一點鹽,直到你有它的工作:)

+1

lol @「遠離專家」 – inspite 2009-05-18 12:48:29

+1

儘管我不會說我在WinForms中是個新手,但我真的不是一個懂得明智定義的專家。 – 2009-05-18 13:07:59

1

你試圖解決什麼問題?如果您嘗試實施本地化,請查看.NET和sattelite程序集附帶的本地化功能。

如果你正在試圖解決的定製,看看.NET提供的自定義選項,在設置編輯器。

爲什麼你需要使用常量字符串?

+1

我有一個很多按鈕和菜單項的表單。根據我們產品的版本,我需要啓用/禁用不同的按鈕組。過去的做法是保存一個字符串列表(按鈕名稱)並用它來檢查某個按鈕是否應該啓用/禁用。 常量字符串嵌入到.designer.cs文件中,該文件起作用,但使設計器無法使用。 – TheSean 2009-05-18 13:00:35

+0

這並不能解釋爲什麼你會使用這些常量字符串作爲佔位符,如果字符串包含按鈕的名稱。 – 2009-05-18 13:29:23

1

你的第二種方法是最好的選擇。因爲你不能假定設計師總是會保持你的改變,而且往往只是把它吹走而已。您將要在Page_Init事件方法中進行控制更改。這可能允許您的更改顯示在設計器中。

http://msdn.microsoft.com/en-us/library/system.web.ui.control.init.aspx

這樣你,讓你在常量實際代碼隱藏類可以控制和控制將啓動你想要的方式,你可以控制你想改變的事情。

更新:對不起,沒有意識到這是WinForms。在WinForms中實際上更容易,因爲在調用控件初始化後,您只需在構造函數中註冊控件即可。

相關問題