欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用重繪項(xiàng)美化WinForm的控件

 更新時(shí)間:2017年10月20日 08:37:37   作者:張果  
這篇文章主要為大家詳細(xì)介紹了如何使用重繪項(xiàng)美化WinForm中控件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

如果你覺(jué)得項(xiàng)目中的ComboBox、ListBox或其它的Winforms控件不能滿足你的顯示要求,包括窗體在內(nèi)很多控件都支持重繪修改顯示樣式。下面的示例完成對(duì)ComBox數(shù)據(jù)項(xiàng)的重繪,希望能起到拋磚引玉的作用。

顯示源代碼

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace SimpleDemo
{
 public partial class frmDrawItem : Form
 {
  public frmDrawItem()
  {
   InitializeComponent();
   //指定繪制模式,這項(xiàng)必須指定為,OwnerDrawFixed,OwnerDrawVariable
   //Normal 由操作系統(tǒng)繪制,并且元素大小都相等。 
   //OwnerDrawFixed 手動(dòng)繪制的,并且元素大小都相等。 
   //OwnerDrawVariable 手動(dòng)繪制,元素大小可能不相等。 
   comboBox2.DrawMode = DrawMode.OwnerDrawFixed;
  }

  //重繪項(xiàng)事件
  private void comboBox2_DrawItem(object sender, DrawItemEventArgs e)
  {
   //獲取要在其上繪制項(xiàng)的圖形表面
   Graphics g = e.Graphics;
   //獲取表示所繪制項(xiàng)的邊界的矩形
   System.Drawing.Rectangle rect = e.Bounds;
   //定義要繪制到控件中的圖標(biāo)圖像
   Image ico = Image.FromFile("head.png");
   //定義字體對(duì)象
   System.Drawing.Font font = new System.Drawing.Font(new FontFamily("宋體"), 12);
   if (e.Index >= 0)
   {
    //獲得當(dāng)前Item的文本
    string tempString = comboBox2.Items[e.Index].ToString();
    //如果當(dāng)前項(xiàng)是沒(méi)有狀態(tài)的普通項(xiàng)
    if (e.State == DrawItemState.None)
    {
     //在當(dāng)前項(xiàng)圖形表面上劃一個(gè)矩形
     g.FillRectangle(new SolidBrush(Color.FromArgb(200, 230, 255)), rect);
     //在當(dāng)前項(xiàng)圖形表面上劃上圖標(biāo)
     g.DrawImage(ico, new Point(rect.Left, rect.Top));
     //在當(dāng)前項(xiàng)圖形表面上劃上當(dāng)前Item的文本
     g.DrawString(tempString, font, new SolidBrush(Color.Black), rect.Left + ico.Size.Width, rect.Top);
     //將繪制聚焦框
     e.DrawFocusRectangle();
    }
    else
    {
     e.Graphics.FillRectangle(new SolidBrush(Color.LightBlue), rect);
     g.DrawImage(ico, new Point(rect.Left, rect.Top));
     g.DrawString(tempString, font, new SolidBrush(Color.Black), rect.Left + ico.Size.Width, rect.Top);
     e.DrawFocusRectangle();
    }
   }
  }

 }
}


總結(jié):如果僅僅是美化可以選擇使用皮膚控件,但使用重繪更加靈活,可以滿足一些功能上的需求。另外不同的控件還有一些不同重繪事件,可以參照MSDN。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • asp.net創(chuàng)建XML文件的方法小結(jié)

    asp.net創(chuàng)建XML文件的方法小結(jié)

    這篇文章主要介紹了asp.net創(chuàng)建XML文件的方法,結(jié)合實(shí)例形式總結(jié)分析了asp.net創(chuàng)建XML文件的原理,步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2016-04-04
  • NetCore 3.0文件上傳和大文件上傳的限制詳解

    NetCore 3.0文件上傳和大文件上傳的限制詳解

    這篇文章主要給大家介紹了關(guān)于NetCore 3.0文件上傳和大文件上傳限制的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用NetCore 3.0具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • .Net Core路由處理的知識(shí)點(diǎn)與方法總結(jié)

    .Net Core路由處理的知識(shí)點(diǎn)與方法總結(jié)

    這篇文章主要給大家介紹了關(guān)于.Net Core路由處理的知識(shí)點(diǎn)與方法的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • C#實(shí)現(xiàn)上傳照片到物理路徑,并且將地址保存到數(shù)據(jù)庫(kù)的小例子

    C#實(shí)現(xiàn)上傳照片到物理路徑,并且將地址保存到數(shù)據(jù)庫(kù)的小例子

    這篇文章主要介紹了c#上傳圖片,并將地址保存到數(shù)據(jù)庫(kù)中的簡(jiǎn)單實(shí)例,有需要的朋友可以參考一下
    2013-12-12
  • ASP.NET連接sql2008數(shù)據(jù)庫(kù)的實(shí)現(xiàn)代碼

    ASP.NET連接sql2008數(shù)據(jù)庫(kù)的實(shí)現(xiàn)代碼

    這篇文章主要介紹了ASP.NET連接sql2008數(shù)據(jù)庫(kù)的實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2015-01-01
  • asp.net TIDFtp用法介紹

    asp.net TIDFtp用法介紹

    現(xiàn)在很多應(yīng)用都需要上傳與下載大型文件,通過(guò)HTTP方式上傳大文件有一定的局限性。幸好FTP作為一個(gè)非常老而且非常成熟的協(xié)議可以高效穩(wěn)定地完成大文件的上傳下載,并且可以完美地實(shí)現(xiàn)續(xù)傳。
    2011-07-07
  • ASP.NET數(shù)組刪除重復(fù)值實(shí)現(xiàn)代碼

    ASP.NET數(shù)組刪除重復(fù)值實(shí)現(xiàn)代碼

    在ASP.NET編程中,要想刪除數(shù)組的重復(fù)值可以使用多種方法代碼實(shí)現(xiàn)相同的效果。今天,在某個(gè)博客中看到某功能代碼中的一小段代碼很不錯(cuò),它就是用來(lái)移動(dòng)數(shù)組中相同值的方法,分享給大家
    2015-10-10
  • ASP.NET 之 MVC框架及搭建教程(推薦)

    ASP.NET 之 MVC框架及搭建教程(推薦)

    下面小編就為大家推薦一篇ASP.NET 之 MVC框架及搭建教程,具有很好的參考,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • asp.net 兩個(gè)不同頁(yè)面的傳值

    asp.net 兩個(gè)不同頁(yè)面的傳值

    父頁(yè)面中:這是一個(gè)js他的意思就是模擬一個(gè)頁(yè)面生成。ReturnValue就是那一個(gè)頁(yè)面返回的值
    2008-12-12
  • .Net?ORM?訪問(wèn)?Firebird?數(shù)據(jù)庫(kù)的方法

    .Net?ORM?訪問(wèn)?Firebird?數(shù)據(jù)庫(kù)的方法

    這篇文章簡(jiǎn)單介紹了在?.net6.0?環(huán)境中使用?FreeSql?對(duì)?Firebird?數(shù)據(jù)庫(kù)的訪問(wèn),目前?FreeSql?還支持.net?framework?4.0?和?xamarin?平臺(tái)上使用,對(duì).Net?ORM?訪問(wèn)?Firebird?數(shù)據(jù)庫(kù)相關(guān)知識(shí)感興趣的朋友一起看看吧
    2022-07-07

最新評(píng)論