C#控件之Button控件使用

记录一下C#编程下的Button控件的使用方法,希望也能帮助大家!

操作方法

  • 01

    Button控件是一个很常见也是用的比较多的一个控件,其实它的实现正和它的使用一样的简单明了。该控件的使用很简单,直接在工具箱里选择该控件即可,如下所示:

  • 02

    双击该控件就可以编写该控件的相关代码,这种按钮是系统很普通的按钮,若是自己去设计按钮,需要编写一个组件库,然后在新的应用程序里引用该组监库,组件库的形式是dll的形式提供。

  • 03

    下面介绍如何设计一个按钮的组件库,第一步:新建一个Windows类库项目,删除项目生成的.cs文件,然后选择菜单栏”项目”->”添加新项”,如下所示:

  • 04

    选择组件类,下面写上组件类的名称,确定即可。 第二步:添加的组件类由于缺少一些引用,需要提前加上,需要加上的引用是System.Drawing和System.Windows.Forms这两个,右键类库项目的引用,然后选择”添加引用”,在弹出的框里面选择.NET选项卡,在里面找缺少的两个引用,如下所示:

  • 05

    第三步:打开组件库的.cs文件,在里面添加额外的命名空间,如下所示: using System.Drawing; using System.Drawing.Drawing2D; using System.Windows.Forms; 将当前类的基类进行修改,如下所示:

  • 06

    这里组件类的名称是ButtonNew,基于系统的Button的类,然后在当前的类下面添加如下代码: private ButtonState buttonState; //建立一个枚举来表示这几种状态 //mouseCancel按钮处于未启用状态 //mouseEnter鼠标在按钮范围内的状态 //mouseDown鼠标在按钮范围内并点击按钮的状态 //mouseLeave鼠标不在按钮范围内的状态 private enum ButtonState { mouseCancel,mouseEnter, mouseDown, mouseLeave } public ButtonNew() { InitializeComponent(); gradientColor = Color.FromArgb(226, 251, 255); base.SetStyle(ControlStyles.UserPaint,true); base.Cursor = Cursors.Hand; } //定义按钮背景渐变色 private Color gradientColor; //定义按钮背景渐变色 public Color GradientColor { get { return gradientColor; } set { if (!gradientColor.Equals(value)) { gradientColor = value; } } } //鼠标移动到按钮上方时 protected override void OnMouseEnter(EventArgs e) { buttonState = ButtonState.mouseEnter; Invalidate(); base.OnMouseEnter(e); } //在按钮上方并按下按钮时 protected override void OnMouseDown(MouseEventArgs mevent) { buttonState = ButtonState.mouseDown; Invalidate(); base.OnMouseDown(mevent); } //鼠标离开按钮可见部分时 protected override void OnMouseLeave(EventArgs e) { buttonState = ButtonState.mouseLeave; Invalidate(); base.OnMouseLeave(e); } //重载Paint函数 protected override void OnPaint(PaintEventArgs pevent) { pevent.Graphics.FillRectangle(new SolidBrush(Parent.BackColor), pevent.ClipRectangle); if (Enabled == false) { buttonState = ButtonState.mouseCancel; DrawButton_mouseCancel(pevent.Graphics); } else if (buttonState == ButtonState.mouseEnter) { DrawButton_mouseEnter(pevent.Graphics); } else if (buttonState == ButtonState.mouseDown) { DrawButton_mouseDown(pevent.Graphics); } else { DrawButton_mouseLeave(pevent.Graphics); } // 重画边框和白色内框 DrawLine(pevent.Graphics); //画文字 DrawString(pevent.Graphics); } //按钮背景区域 private Rectangle ReturnRectangle() { return new Rectangle(1, 1, Width - 2, Height - 2); } //灰色刷子 private Brush RetrunCancelBrush() { return new SolidBrush(Color.FromArgb(230, 230, 230)); } //移动到按钮刷子 private Brush RetrunMoveBrush() { return new SolidBrush(gradientColor); } //渐变填充刷子 private Brush RetrunBrush() { return new LinearGradientBrush(this.ClientRectangle, Color.White, gradientColor, LinearGradientMode.Vertical); } //灰色按钮,不可用 private void DrawButton_mouseCancel(Graphics graphics) { //填充按钮背景色 graphics.FillRectangle(RetrunCancelBrush(), ReturnRectangle()); } //正常状态按钮 private void DrawButton_mouseLeave(Graphics graphics) { //填充按钮背景色 graphics.FillRectangle(RetrunBrush(), ReturnRectangle()); } //移动到按钮 private void DrawButton_mouseEnter(Graphics graphics) { //填充按钮背景色 graphics.FillRectangle(RetrunMoveBrush(), ReturnRectangle()); } //单击按钮 private void DrawButton_mouseDown(Graphics graphics) { //填充按钮背景色 graphics.FillRectangle(RetrunCancelBrush(), ReturnRectangle()); } //重画边框和白色内框,边框的颜色固定不可调整 private void DrawLine(Graphics graphics) { //画白色内框 graphics.DrawRectangle(Pens.White, 1, 1, Width - 3, Height - 3); //画边框 Pen p = new Pen(Color.FromArgb(176, 185, 196), 1); graphics.DrawLine(p, 0, 2, 0, Height - 3); graphics.DrawLine(p, 2, 0, Width - 3, 0); graphics.DrawLine(p, Width - 1, 2, Width - 1, Height - 3); graphics.DrawLine(p, 2, Height - 1, Width - 3, Height - 1); graphics.DrawLine(p, 0, 2, 2, 0); graphics.DrawLine(p, 0, Height - 3, 2, Height - 1); graphics.DrawLine(p, Width - 3, 0, Width - 1, 2); graphics.DrawLine(p, Width - 3, Height - 1, Width - 1, Height - 3); } //重画文字 private void DrawString(Graphics graphics) { Font font = Font; SizeF size = graphics.MeasureString(Text, Font); Point point = new Point(Convert.ToInt16((Width - size.Width) / 2), Convert.ToInt16((Height - size.Height) / 2 + 1)); Point pointDouble = new Point(Convert.ToInt16((Width - size.Width) / 2+1), Convert.ToInt16((Height - size.Height) / 2 + 2)); //一个像素偏移 graphics.DrawString(Text, Font, new SolidBrush(Color.FromArgb(255, 255, 255)), pointDouble); graphics.DrawString(Text, Font, new SolidBrush(ForeColor), point); }

  • 07

    接着就是进行编译,将编译生成的dll放在C#的Windows窗口应用程序文件夹目录下,在C#的Windows窗口应用程序项目的引用处右键选择” 添加引用”,弹出的框里选择”浏览”选项卡,如下所示:

  • 08

    添加上确定即可。 然后打开Windows窗口界面的.Designer.cs文件,在里面找到InitializeComponent函数,最初的函数代码内容如下: private void InitializeComponent() { this.SuspendLayout(); // // Form1 // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(388, 262); this.Name = "Form1"; this.Text = "Form1"; this.ResumeLayout(false); } 如果要添加按钮,只需要在代码里面添加就可以。

(0)

相关推荐

  • Windows 8技巧:Windows 8 中Slider控件与ToggleSwitch控件的使用方法

    一:Silder控件是滑块控件,在Silverlight中也存在,其主要用于音量调节,亮度调节,色彩调节,温度计等。 主要属性: FlowDirection:从左向右滑动或者从右向左滑动 Minimu ...

  • Foxmail特色功能之‘定时发件’和‘加密发件’

    在Foxmail邮件工具里,有二个比较有特色的发件功能是'定时发件'和'加密发件',这二个功能怎么用?一起来看下. 加密发件 01 我们先打开Foxmail,然后点击工具栏上的'写邮件' 02 打开写 ...

  • Access怎么设置控件? Access窗体控件的设计方法

    今天我们就来详细介绍一下Access设置控件的教程,请看下文详细介绍. 1.双击打开已经创建完成的数据库. 2.在对象导航窗格中右键单击“rEmp”报表,选择右键菜单“设计视图”,进入报表的设计视图. ...

  • C#控件之DateTimePicker控件使用

    记录一下C#的Data TimePicker控件的使用方法,也希望能够帮到大家! 操作方法 01 DateTimePicker控件是用来显示和修改日期时间的,但默认只显示日期和修改日期. Ø  若要显 ...

  • C#控件之ComboBox控件使用

    简单记录一下C#语言对ComboBox控件的使用方法,希望能够帮助到大家! 操作方法 01 首先如果要给ComboBox控件输入要显示的内容,方法是点击控件会显示如下图所示: 02 然后点击" ...

  • 如何批量删除Windows系统的空文件夹且空文件夹无法删除怎么办?

    空文件夹,就是其中不含有任何文件的文件夹,空文件夹散布于电脑硬盘内,虽然几乎不占用硬盘空间,但是会影响到文件的查找效率,也干扰了文件的管理,因此有必要对其进行清理.那么,如何快速查找和清理空文件夹?无 ...

  • 淘宝/天猫怎么设置第二件半价/火牛第二件优惠

    经常可以看到一些店铺会有第二件半价,或者第二件起优惠n元的活动,这些是参加了淘宝活动,还是可以自行设置的呢?今天小编就和大家分享一下,淘宝或者天猫店铺如何自行设置第二件半价的活动. 操作方法 01 登 ...

  • 菜鸟驿站的包裹可以送货上门吗(上门取件和驿站寄件有什么不同)

    #菜鸟驿站可以免费送货上门了#昨天驿站取件,看物流界面发现,多了个选项叫"需要上门"!一下勾起了我的辛酸记忆!入行快递七年,做驿站一年,至今没明白,快递最后一百米究竟要怎样?一,习 ...

  • VisualStudio页面怎么使用控件?

    Visual Studio制作网页需要添加一些控件,该怎么添加按钮控件和文本框控件呢?下面我们就来看看详细的教程. 1.单击开始---->所有程序---->Visual Studio 20 ...