ASP.net控制項開發系列之六

來源:互聯網
上載者:User

UITypeEdit

“我要紅桃”

假如,你現在在做一個“撲克”控制項,撲克牌有個屬性--花色,你想在使用者選擇花色這個屬性後,屬性視窗呈現的不僅僅是文字,還有一個小小的花色表徵圖來表示花色,“紅桃”就有個小“紅桃”表徵圖在前面顯示,“黑桃”就有個“黑桃”表徵圖在前面顯示,就像你選擇其它控制項的BackColor時,顏色前還有個小方色塊來表示選定的顏色,多體貼人的設計啊。

現在,我們就來做這件事:

public class Squeezer
{
.
public CardTypes CardType
{
}
}
[Editor(typeof(CardTypesEditor), typeof(System.Drawing.Design.UITypeEditor))]
public class CardTypes
{
..
}
public class CardTypesEditor : UITypeEditor
{
  public override bool GetPaintValueSupported(ITypeDescriptorContext context)
  {
  return true;//支援畫小圖
  }
  public override void PaintValue(PaintValueEventArgs pe) //定義根據值畫小圖的邏輯
  {
  string bmpName = null;
  CardTypes C = (CardTyes)pe.Value;
  switch(C.Value)
  {
   case CarderTypes.HongTao:
   bmpName = "紅桃.bmp";//圖片必須是內嵌資源,大小為16*16,類型為BMP
   break;
  }
  Bitmap b = new Bitmap(typeof(GradeEditor), bmpName);
  pe.Graphics.DrawImage(b, pe.Bounds);
  b.Dispose(); 
  }
}

在上面的代碼中,我們通過EditorAttribute來使花色類和一個Editor關聯,再通過這個Editor來實現畫示意小圖的功能。

好了,現在你的創造力可能又在鼓動你思考一個新問題了,我不想讓讓使用者僅僅通過一個簡單的只呈現值的下拉式清單(通過EnumConverter實現的)來選擇屬性的值,我想實現像BackColor、Dock這樣的非常友善的互動給使用者使用,好吧,我們來進入下一步。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.