程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> ASP.net控件開發系列之六

ASP.net控件開發系列之六

編輯:關於ASP.NET

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這樣的非常友善的交互給用戶使用,好吧,我們來進入下一步。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved