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

使用重繪項美化WinForm的控件

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

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

顯示源代碼

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();
   //指定繪制模式,這項必須指定為,OwnerDrawFixed,OwnerDrawVariable
   //Normal 由操作系統(tǒng)繪制,并且元素大小都相等。 
   //OwnerDrawFixed 手動繪制的,并且元素大小都相等。 
   //OwnerDrawVariable 手動繪制,元素大小可能不相等。 
   comboBox2.DrawMode = DrawMode.OwnerDrawFixed;
  }

  //重繪項事件
  private void comboBox2_DrawItem(object sender, DrawItemEventArgs e)
  {
   //獲取要在其上繪制項的圖形表面
   Graphics g = e.Graphics;
   //獲取表示所繪制項的邊界的矩形
   System.Drawing.Rectangle rect = e.Bounds;
   //定義要繪制到控件中的圖標圖像
   Image ico = Image.FromFile("head.png");
   //定義字體對象
   System.Drawing.Font font = new System.Drawing.Font(new FontFamily("宋體"), 12);
   if (e.Index >= 0)
   {
    //獲得當前Item的文本
    string tempString = comboBox2.Items[e.Index].ToString();
    //如果當前項是沒有狀態(tài)的普通項
    if (e.State == DrawItemState.None)
    {
     //在當前項圖形表面上劃一個矩形
     g.FillRectangle(new SolidBrush(Color.FromArgb(200, 230, 255)), rect);
     //在當前項圖形表面上劃上圖標
     g.DrawImage(ico, new Point(rect.Left, rect.Top));
     //在當前項圖形表面上劃上當前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();
    }
   }
  }

 }
}


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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

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

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

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

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

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

    .Net Core路由處理的知識點與方法總結

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

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

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

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

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

    asp.net TIDFtp用法介紹

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

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

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

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

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

    asp.net 兩個不同頁面的傳值

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

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

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

最新評論