[英]Prevent Designer from removing Attributes on Control members
我想用屬性標記Windows窗體上的某些控件。 所以我在TestAttributes.Designer.cs
添加了Attribute:
[AmbientValue(true)]
private System.Windows.Forms.Label label1;
但是,每當我使用設計器的屬性窗口更改label1的Modifiers
-property時,設計器都會從聲明中靜默刪除我的Attribute:
public System.Windows.Forms.Label label1;
我嘗試將聲明放入TestAttributes.cs
,以免與TestAttributes.cs
文件TestAttributes.cs
。 但是,當更改Modifiers
屬性時,聲明將移回TestAttributes.Designer.cs
並且該屬性消失了。
如何防止設計器刪除我的屬性?
編輯:問題最好是:我可以將控件的聲明從*.Designer.cs
文件中永久移出,以便可以在其中應用屬性嗎? 正如我上面所寫,在某些情況下它會移回原處。
謝謝! 豐富
如果要保持設計者支持,建議使用外部類庫。
namespace ClassLibrary1
{
[System.ComponentModel.AmbientValue(true)]
public class TestClass : System.Windows.Forms.Label
{
}
}
您可以將類似的內容編譯到類庫中,然后將其導入到Visual Studio中。 如果您不知道該怎么做,請按照以下說明進行操作。
我通常不喜歡給出“不做”答案但不做的人。
更改設計師級別是危險的,幾乎總是會導致意想不到的后果。 設計器代碼是為編譯器保留的,並且應始終看起來像編譯器期望的那樣。
如果您確實想要設計器代碼中的屬性,則應該制作一個空應用程序,然后自己編寫表單代碼。 如果您不了解如何從頭開始,則無論如何都不要試圖修改設計器代碼
如果這似乎需要大量工作,則始終可以嘗試使用設計器作為模型,然后將其復制到新的非Windows窗體項目中。
直到最近,我才被人們認為設計師只是代碼的一部分,並且不被觸及。 我錯了。 事實證明,您可以將整個過程拆掉,然后編譯器將向您拋出錯誤。 好的,只需定義您自己的東西,從而完全消除了設計師的需要。 這是怎么回事。 假設您有標簽
<div id="div1" runat="server">
並且您希望在沒有任何designer.cs文件的情況下使它在背面不可見(我們將其刪除了)。 首先將其與其他聲明一起引用(即,在page_load之外,在外部某處)
protected System.Web.UI.HtmlControls.HtmlGenericControl div1;
但是請記住,您必須引用在正面使用runat =“ server”標記的所有內容。 因此,假設您有一個僅帶有runat =“ server”標簽的頁面,在背面我們將其稱為
namespace yournamespace.something
{
public class yourpagetitle: System.Web.UI.Page
{
protected System.Web.UI.WebControls.Image imgLogo;
protected System.Web.UI.WebControls.TextBox tbDate;
protected System.Web.UI.WebControls.Label yourLabelName;
注意,我添加了圖像和文本框作為其他示例。 還有哈扎! 這樣就完全消除了對designer.cs文件的需要。 哦,請注意,designer.cs文件不過是我們上面所做的,而是自動為您完成的。 ...大多數時候...失敗時,該以自己的方式處理問題。 我敢肯定,如果您重新格式化計算機,重新安裝所有內容等,等等,一切都會再次發生,毫無疑問。 對於那些沒有時間照顧和解決Microsoft遇到的小麻煩的人來說,這只是一個合法的解決方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.