簡體   English   中英

如何將枚舉屬性添加到WebControl

[英]How to add enum properties to a WebControl

編輯:看起來可能是Visual Studio問題。 如果我重新啟動Visual Studio,則在重新生成解決方案之前它將一直有效。

使用以下代碼時,在設計器中出現“無法在屬性“ MyMode”上設置“ B””異常:

public class MyControl : CompositeControl
{
  public enum MyEnum{ A, B }

  [DefaultValue(MyEnum.A)]
  public MyEnum MyMode
  {
    get
    {
      object obj = ViewState["MyMode"];
      return obj == null ? MyMode.A : (MyEnum)obj;
    }

    set
    {
      ViewState["MyMode"] = value;
    }
  }
}

重現:在項目中創建控件。 將控件拖到另一個項目中的Web窗體上。 在屬性窗口中設置MyMode =B。 關閉窗體,重新打開設計器。

我究竟做錯了什么? 我需要手動將字符串解析為枚舉嗎?

編輯:設計器生成的代碼。

<cc1:MyControl ID="MyControl1" runat="server" MyMode="B"  />

編輯:實際上,此屬性也將失敗:

  public MyEnum MyMode
  {
    get
    {
      return MyEnum.A;
    }    
    set{}
  }

您試圖將值設置為字符串“ B”。 您需要將其設置為數值,因為這就是枚舉。

...
set
{
  ViewState["MyMode"] = value; // <-- 'value' must be an integer equivalent to B
  // in this example, to set as 'B', 'value' == 1
}
...

編輯這篇文章

這是Visual Studio 2008 SP1錯誤

https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=361826

請注意,實際上有兩個修補程序發布,如以下所述: http : //support.microsoft.com/kb/961847

一個用於Windows XP和2009,而另一個用於Windows Vista和Windows Server 2008。

Windows XP和2003: http//support.microsoft.com/kb/969612/

Windows Vista和Windows Server 2008: http//support.microsoft.com/kb/967535/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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