亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

WinForm自定義控件應用實例

2020-01-24 02:35:53
字體:
來源:轉載
供稿:網友

C#的WinForm有一些控件具備自繪的功能,這就意味著你可以對這些控件進行自繪,可以起到意想不到的視覺效果。本文所述的以下控件就是通過一些簡單的控件轉變過來的。具體示例如下:

1、橫向選項卡重繪:

這里的“橫向”對話框其實是通過一個TabControl進行“方向旋轉”、重繪控件項等操作進行實現的。步驟如下:

①.Alignment:用于控制選項卡的方向(設置為Left)。

②.SizeMode:用于調整每個選項卡,默認是Normal(非自繪模式),此處應該設置為Fixed(固定模式),則允許自繪。

③.設置ItemSize(注意每一個選項卡因為是“橫向”的,但是這些單元卡的Width或者是Height確實按照原來“豎向”的選項卡進行處理的。因此Height其實是橫向選項卡的“寬度”,而Width確實選項卡的“高度”,注意不要混淆)。

④.最后重繪DrawItem,這一步也就是最重要的(為了顯示文字)。每次Draw_Item會在創建了TabPage之后被調用。此時你應該設定繪制文字的起始點(定義X,Y)。

具體實現代碼如下:

C#部分代碼:

private void tabControl1_DrawItem(object sender, DrawItemEventArgs e){ e.DrawFocusRectangle(); e.DrawBackground(); e.Graphics.DrawString("標簽" + (e.Index + 1), SystemFonts.DefaultFont, Brushes.Black, new PointF(e.Bounds.X + 5, e.Bounds.Y +   5));}

VB.NET頁面部分代碼:

Private Sub tabControl1_DrawItem(sender As Object, e As DrawItemEventArgs)  e.DrawFocusRectangle()  e.DrawBackground()  e.Graphics.DrawString("標簽" & Convert.ToString((e.Index + 1)), SystemFonts.DefaultFont, Brushes.Black, New PointF(e.Bounds.X + 5, e.Bounds.Y + 5))End Sub

注意:程序的DrawFocusRectangle和DrawBackGound分別是繪制聚焦虛框和選定一個選項卡之后背景變成藍色。如果省略則無法呈現選中的效果。

2、顏色選項卡重繪:

Combobox和TabControl一樣每一個Item都可以重繪。重要屬性如下:

①.ItemHeight:設置每項項目的重繪高度。

②.DrawMode:重繪樣式(分為:Normal一般模式,不支持重繪;OwnerDrawFixed:自繪模式,固定高度,OwnerDrawVariable:自繪模式,可以在MesureItem中重新為每一項調整高度進行繪制)。

③.重繪Draw_Item。

全部代碼如下:

C#部分代碼:

public partial class Form1 : Form{/// <summary>/// 綁定下拉列表的Color類/// </summary>private class ColorInfo{  /// <summary>  /// 顏色名稱  /// </summary>  public string ColorName { get; set; }  /// <summary>  /// 對應的Color實體  /// </summary>  public Color Color { get; set; }  public static List<ColorInfo> GetAllColors()  { Color c = new Color(); List<ColorInfo> Colors = new List<ColorInfo>(); foreach (var item in c.GetType().GetProperties()) {   //排除非顏色的情況   if (item.GetValue(c, null) is Color)   { Colors.Add(new ColorInfo { ColorName = item.Name, Color = (Color)item.GetValue(c, null) });   } } return Colors;  }}public Form1(){  InitializeComponent();  comboBox1.DataSource = ColorInfo.GetAllColors();  comboBox1.DisplayMember = "ColorName";  comboBox1.ValueMember = "Color";}private void comboBox1_DrawItem(object sender, DrawItemEventArgs e){  e.DrawBackground();  e.DrawFocusRectangle();  //繪制空心矩形框,起始點(0,5),寬度60,高度10  Rectangle r = new Rectangle(e.Bounds.X, e.Bounds.Y+5, 60, 10);  //外框是黑色  e.Graphics.DrawRectangle(new Pen(Color.Black),r);  //內框用枚舉出來的顏色填充  e.Graphics.FillRectangle(new SolidBrush((comboBox1.DataSource as List<ColorInfo>)[e.Index].Color), r);  //繪制顏色名稱,起始點每項都是Item中(70,5)  e.Graphics.DrawString((comboBox1.DataSource as List<ColorInfo>)[e.Index].ColorName, SystemFonts.DefaultFont, Brushes.Black, new PointF(e.Bounds.X + 70, e.Bounds.Y + 5));}}

VB.NET頁面部分代碼:

Public Partial Class Form1  Inherits Form  ''' <summary>  ''' 綁定下拉列表的Color類  ''' </summary>  Private Class ColorInfo    ''' <summary>    ''' 顏色名稱    ''' </summary>    Public Property ColorName() As String      Get        Return m_ColorName      End Get      Set        m_ColorName = Value      End Set    End Property    Private m_ColorName As String    ''' <summary>    ''' 對應的Color實體    ''' </summary>    Public Property Color() As Color      Get        Return m_Color      End Get      Set        m_Color = Value      End Set    End Property    Private m_Color As Color    Public Shared Function GetAllColors() As List(Of ColorInfo)      Dim c As New Color()      Dim Colors As New List(Of ColorInfo)()      For Each item As var In c.[GetType]().GetProperties()        '排除非顏色的情況        If TypeOf item.GetValue(c, Nothing) Is Color Then          Colors.Add(New ColorInfo() With { _            Key .ColorName = item.Name, _            Key .Color = DirectCast(item.GetValue(c, Nothing), Color) _          })        End If      Next      Return Colors    End Function  End Class  Public Sub New()    InitializeComponent()    comboBox1.DataSource = ColorInfo.GetAllColors()    comboBox1.DisplayMember = "ColorName"    comboBox1.ValueMember = "Color"  End Sub  Private Sub comboBox1_DrawItem(sender As Object, e As DrawItemEventArgs)    e.DrawBackground()    e.DrawFocusRectangle()    '繪制空心矩形框,起始點(0,5),寬度60,高度10    Dim r As New Rectangle(e.Bounds.X, e.Bounds.Y + 5, 60, 10)    '外框是黑色    e.Graphics.DrawRectangle(New Pen(Color.Black), r)    '內框用枚舉出來的顏色填充    e.Graphics.FillRectangle(New SolidBrush(TryCast(comboBox1.DataSource, List(Of ColorInfo))(e.Index).Color), r)    '繪制顏色名稱,起始點每項都是Item中(70,5)    e.Graphics.DrawString(TryCast(comboBox1.DataSource, List(Of ColorInfo))(e.Index).ColorName, SystemFonts.DefaultFont, Brushes.Black, New PointF(e.Bounds.X + 70, e.Bounds.Y + 5))  End SubEnd Class
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日本一区二三区好的精华液| 日韩美女激情视频| 欧美又大又粗又长| 日韩精品在线视频| 亚洲成人中文字幕| 国产欧美日韩精品丝袜高跟鞋| 4388成人网| 日本国产欧美一区二区三区| 欧美性20hd另类| 亚洲石原莉奈一区二区在线观看| 国产97在线观看| 国产精品亚洲欧美导航| 成人黄色免费看| 亚洲国语精品自产拍在线观看| 在线亚洲午夜片av大片| 精品无人区太爽高潮在线播放| 最新日韩中文字幕| 51精品国产黑色丝袜高跟鞋| 亚洲视频免费一区| 一道本无吗dⅴd在线播放一区| 美女性感视频久久久| 2020久久国产精品| 亚洲第一区在线| 欧美日韩在线影院| 亚洲v日韩v综合v精品v| 欧美黑人xxx| 国产不卡在线观看| 亚洲v日韩v综合v精品v| 亚洲国产成人av在线| 中文字幕亚洲天堂| 亚洲美女在线观看| 日本中文字幕成人| 热久久99这里有精品| 国产一区二区三区三区在线观看| 亚洲精品97久久| 欧美性视频网站| 亚洲国产中文字幕在线观看| 国产欧美日韩91| 国产日韩在线视频| 国产精品久久婷婷六月丁香| 久久久久久欧美| 久久久久久久电影一区| 久久精品国产亚洲精品| 亚洲欧美在线第一页| 久久久久免费精品国产| 欧美影院成年免费版| 亚洲成人av在线播放| 欧美午夜精品久久久久久人妖| 日本一区二区三区在线播放| 亚洲美女自拍视频| 国产精品成人va在线观看| 亚洲精品国产电影| 午夜精品美女自拍福到在线| 久久九九精品99国产精品| 日韩视频免费在线| 日韩中文理论片| 日韩在线免费观看视频| 伊人久久久久久久久久久久久| 欧美日韩午夜视频在线观看| 91大神福利视频在线| 国产精品色午夜在线观看| 亚洲综合一区二区不卡| 性欧美亚洲xxxx乳在线观看| 欧美诱惑福利视频| 91免费版网站入口| 亚洲免费福利视频| 热re99久久精品国产66热| 久久精品亚洲94久久精品| 久久精品国产96久久久香蕉| 国产啪精品视频| 国产成人极品视频| 久久在线精品视频| 亚洲电影在线观看| 亚洲精品国产精品乱码不99按摩| 国产精品无av码在线观看| 久久99精品国产99久久6尤物| 欧美日韩国产中文字幕| 久操成人在线视频| 欧美亚洲另类激情另类| 国产精品三级久久久久久电影| 红桃视频成人在线观看| 亚洲免费影视第一页| 久久97精品久久久久久久不卡| 欧美肥婆姓交大片| 久久久成人的性感天堂| 久久在线观看视频| 国产午夜精品一区二区三区| www.久久久久| 欧美成人午夜免费视在线看片| 日韩美女福利视频| 这里只有精品视频在线| 亚洲理论在线a中文字幕| 日本电影亚洲天堂| 亚洲色图狂野欧美| 91性高湖久久久久久久久_久久99| 欧美国产日韩一区二区| 亚洲最大的免费| 欧美精品久久久久久久| 久久久欧美一区二区| 亚洲成人精品久久| 国内成人精品视频| 中文字幕综合在线| 麻豆国产va免费精品高清在线| 97av在线影院| 永久免费毛片在线播放不卡| 国产精品白丝jk喷水视频一区| 欧美国产日韩一区二区| 精品国产乱码久久久久久婷婷| 日韩经典中文字幕| 日韩中文综合网| 在线精品国产欧美| 91香蕉亚洲精品| 国产精品高潮呻吟久久av无限| 亚洲国产又黄又爽女人高潮的| 久久99久久99精品免观看粉嫩| 亚洲色图欧美制服丝袜另类第一页| 国产噜噜噜噜噜久久久久久久久| 欧美xxxx做受欧美.88| 欧美富婆性猛交| 亚洲影视九九影院在线观看| 九九热最新视频//这里只有精品| 欧美黄色片免费观看| 成人黄色免费看| 久久99视频精品| 久久久精品在线| 日韩在线欧美在线国产在线| 欧美区二区三区| 欧美午夜精品久久久久久久| 一区二区三区在线播放欧美| 成人欧美一区二区三区黑人| 欧美在线播放视频| 亚洲色图欧美制服丝袜另类第一页| 国产亚洲欧美日韩一区二区| 中文字幕亚洲欧美一区二区三区| 亚洲另类激情图| 97福利一区二区| 国产精品高潮视频| 欧美精品成人在线| 国内免费精品永久在线视频| 日韩精品中文字幕在线播放| 97在线视频国产| 国产精品久久久久久久久免费看| 久久久久久中文| 国产美女扒开尿口久久久| 日韩av一区在线| 日韩欧美亚洲范冰冰与中字| 成人淫片在线看| xxxx性欧美| 日韩精品中文字幕在线观看| 国产精品91久久久| 精品欧美国产一区二区三区| 少妇高潮久久久久久潘金莲| 国产91成人video| 欧美日韩在线观看视频| 国产精品白嫩初高中害羞小美女| 欧美大全免费观看电视剧大泉洋| 亚洲精品国产综合区久久久久久久| 亚洲欧美在线x视频| 午夜精品久久久久久久99热| 欧美日韩xxx| 国产精品96久久久久久| 日本亚洲欧洲色| 亚洲视频欧洲视频| 久久亚洲精品小早川怜子66|