簡體   English   中英

防止Designer刪除控件成員上的屬性

[英]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中。 如果您不知道該怎么做,請按照以下說明進行操作。

  1. 右鍵單擊工具箱
  2. 點擊“選擇項目”
  3. 等待。 現在不要犯終止Visual Studio的錯誤。
  4. 選擇瀏覽。
  5. 選擇您的dll文件。

我通常不喜歡給出“不做”答案但不做的人。

更改設計師級別是危險的,幾乎總是會導致意想不到的后果。 設計器代碼是為編譯器保留的,並且應始終看起來像編譯器期望的那樣。

如果您確實想要設計器代碼中的屬性,則應該制作一個空應用程序,然后自己編寫表單代碼。 如果您不了解如何從頭開始,則無論如何都不要試圖修改設計器代碼

如果這似乎需要大量工作,則始終可以嘗試使用設計器作為模型,然后將其復制到新的非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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM