• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > 使用重绘项美化WinForm的控件

使用重绘项美化WinForm的控件

作者:张果 字体:[增加 减小] 来源:互联网 时间:2018-08-20

张果 通过本文主要向大家介绍了WinForm,美化,控件等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

如果你觉得项目中的ComboBox、ListBox或其它的Winforms控件不能满足你的显示要求,包括窗体在内很多控件都支持重绘修改显示样式。下面的示例完成对ComBox数据项的重绘,希望能起到抛砖引玉的作用。

显示源代码

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 由操作系统绘制,并且元素大小都相等。 
   //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();
    //如果当前项是没有状态的普通项
    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。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Winform控件SaveFileDialog用于保存文件
  • WinForm中DataGridView折叠控件【超好看】
  • .net WINFORM的GDI双缓冲的实现方法
  • C# winform打印excel的方法
  • 使用重绘项美化WinForm的控件
  • WinForm中如何预览Office文件
  • Asp.net第三方控件ComboBox组合框介绍
  • .Net中导出数据到Excel(asp.net和winform程序中)
  • WinForm中窗体间的数据传递交互的一些方法
  • ASP.NET也像WinForm程序一样运行的实现方法

相关文章

  • 2017-05-11asp.net采集页面上所有图像图片资源的具体方法
  • 2017-05-11在.NET2.0中使用自定义事务操作
  • 2017-05-11在ASP.NET 2.0中操作数据之二十七:创建自定义排序用户界面
  • 2017-05-11.net的socket异步通讯示例分享
  • 2017-05-11将Excel中数据导入到Access数据库中的方法
  • 2017-05-11在ASP.NET中下载文件的实现代码
  • 2017-05-11asp.net实现输出xml的方法
  • 2017-05-11asp.net 数据库连接类代码(SQL)
  • 2017-05-11ASP.NET MVC5网站开发项目框架(二)
  • 2017-05-11asp.net 使用事务

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • xml 文件的创建和读取代码
    • Asp.net在ashx文件中处理Session问题解决方法
    • WeakReference(弱引用)让GC需要时回收对象
    • 简单使用BackgroundWorker创建多个线程的教程
    • 自己常用到的自定义公共类(已测试通过)
    • ASP.NET数据绑定之DataList控件
    • ASP.NET MVC4入门教程(七):给电影表和模型添加新字段
    • AutoCAD .Net禁止图元被删除的方法
    • asp.net 数据库连接池浅析
    • 通过C#动态生成图书信息XML文件

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有