明辉站/网站教程/内容

自定义按钮(转)

网站教程2024-06-16 阅读
[摘要]//这个用户自定义控件继承自Button类//实现了在按纽左侧显示图片的任务//和点击后显示不同样式的功能//下面就是人家的了//本人加如了一些注释using System;using System.Windows.Forms;using System.Drawing;namespace NETT...
//这个用户自定义控件继承自Button类
//实现了在按纽左侧显示图片的任务
//和点击后显示不同样式的功能
//下面就是人家的了
//本人加如了一些注释

using System;
using System.Windows.Forms;
using System.Drawing;

namespace NETToggle
{
/// <summary>
/// Summary description for customFlatButton.
/// </summary>
public class customFlatButton : System.Windows.Forms.Button
{
//used to set the type of image that is displayed with the button
public enum TOGGLE_TYPE{ none, XML_TOGGLE, HTML_TOGGLE };//显示类型

private bool bSelected = false;//是否被选择
private System.Windows.Forms.ImageList flatBtnImageList;//从工具栏拖进来的了
//他的一些东西有vs.net工具自动生成
private System.ComponentModel.IContainer components;
private int toggleType = 0;

public int ToggleType
{
get{ return toggleType; }
set{ toggleType = value; }
}

public bool bChangeSelection
{
get{ return bSelected; }
set{ bSelected = value; Invalidate(); }
}

public customFlatButton()
{
InitializeComponent();
}

private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(customFlatButton));
this.flatBtnImageList = new System.Windows.Forms.ImageList(this.components);
//
// flatBtnImageList
//
this.flatBtnImageList.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit;
this.flatBtnImageList.ImageSize = new System.Drawing.Size(9, 9);
this.flatBtnImageList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("flatBtnImageList.ImageStream")));
this.flatBtnImageList.TransparentColor = System.Drawing.Color.Transparent;
//
// customFlatButton
//
this.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
this.Size = new System.Drawing.Size(57, 19);

}

protected override void OnMouseEnter( System.EventArgs e )
{
return;
}

protected override void OnClick( System.EventArgs e)
{
bSelected = true;//触发bChangeSelection的写属性--调用this.Invalidate();--引起对OnPaint()的调用
base.OnClick(e);
}

protected override void OnMouseDown( System.Windows.Forms.MouseEventArgs e)
{
OnClick(e);
}

protected override void OnPaint( System.Windows.Forms.PaintEventArgs e )
{
Rectangle rect = e.ClipRectangle;
Graphics g = e.Graphics;

if( bSelected )
{
g.FillRectangle( new SolidBrush(Color.White), rect );
g.DrawString( this.Text, this.Font, new SolidBrush(this.ForeColor), 20, (float)2.5 );

g.DrawRectangle( new Pen(System.Drawing.SystemColors.Highlight, 2), rect );
}
else
{
g.FillRectangle( new SolidBrush(System.Drawing.SystemColors.Control), rect );
g.DrawString( this.Text, this.Font, new SolidBrush(this.ForeColor),20, (float)2.5 );
}

//now draw the correct image if one is specified
if( toggleType == (int)TOGGLE_TYPE.XML_TOGGLE )
g.DrawImage( this.flatBtnImageList.Images[0], 8, 5 );
else if( toggleType == (int)TOGGLE_TYPE.HTML_TOGGLE )
g.DrawImage( this.flatBtnImageList.Images[1], 7, 5 );
}
}
}

……

相关阅读