WINFORM自定义开关按钮控件,WinForm 如何自定义开关控件

先上结果:

由于WinForm中没有开关控件,需要自定义。下面就写我制作开关控件的步骤。

1、新建个WinForm程序,右键选择属性。

2、点击资源,将资源的类型修改为图像,然后将Button的图片复制进去(直接从文件夹里复制就行了)

3、新建用户控件,命名为OnOffButton。

在OnOffButton.cs中编写代码。

using System;using System.Drawing;using System.Windows.Forms;namespace WindowsFormsApp1{public enum CheckStyle{style1 = 0,style2 = 1,style3 = 2,style4 = 3,style5 = 4,style6 = 5};public partial class OnOffButton : UserControl{public OnOffButton(){InitializeComponent();//设置Style支持透明背景色并且双缓冲this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);this.SetStyle(ControlStyles.DoubleBuffer, true);this.SetStyle(ControlStyles.ResizeRedraw, true);this.SetStyle(ControlStyles.Selectable, true);this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);this.SetStyle(ControlStyles.UserPaint, true);this.BackColor = Color.Transparent;this.Cursor = Cursors.Hand;this.Size = new Size(87, 27);}bool isCheck = false;/// /// 是否选中/// public bool Checked{set { isCheck = value; this.Invalidate(); }get { return isCheck; }}CheckStyle checkStyle = CheckStyle.style1;/// /// 样式/// public CheckStyle CheckStyleX{set { checkStyle = value; this.Invalidate(); }get { return checkStyle; }}protected override void OnPaint(PaintEventArgs e){Bitmap bitMapOn = null;Bitmap bitMapOff = null;if (checkStyle == CheckStyle.style1){bitMapOn = global::WindowsFormsApp1.Properties.Resources.btncheckon1;bitMapOff = global::WindowsFormsApp1.Properties.Resources.btncheckoff1;}else if (checkStyle == CheckStyle.style2){bitMapOn = global::WindowsFormsApp1.Properties.Resources.btncheckon2;bitMapOff = global::WindowsFormsApp1.Properties.Resources.btncheckoff2;}else if (checkStyle == CheckStyle.style3){bitMapOn = global::WindowsFormsApp1.Properties.Resources.btncheckon3;bitMapOff = global::WindowsFormsApp1.Properties.Resources.btncheckoff3;}else if (checkStyle == CheckStyle.style4){bitMapOn = global::WindowsFormsApp1.Properties.Resources.btncheckon4;bitMapOff = global::WindowsFormsApp1.Properties.Resources.btncheckoff4;}else if (checkStyle == CheckStyle.style5){bitMapOn = global::WindowsFormsApp1.Properties.Resources.btncheckon5;bitMapOff = global::WindowsFormsApp1.Properties.Resources.btncheckoff5;}else if (checkStyle == CheckStyle.style6){bitMapOn = global::WindowsFormsApp1.Properties.Resources.btncheckon6;bitMapOff = global::WindowsFormsApp1.Properties.Resources.btncheckoff6;}Graphics g = e.Graphics;Rectangle rec = new Rectangle(0, 0, this.Size.Width, this.Size.Height);if (isCheck){g.DrawImage(bitMapOn, rec);}else{g.DrawImage(bitMapOff, rec);}}private void OnOffButton_Click(object sender, EventArgs e){isCheck = !isCheck;this.Invalidate();}}}

然后编写OnOffButton.Designer.cs代码。主要修改组件设计器生成的代码

#region 组件设计器生成的代码////// 设计器支持所需的方法 - 不要修改/// 使用代码编辑器修改此方法的内容。/// private void InitializeComponent(){this.SuspendLayout();this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;this.Name = "myButtonCheck";this.Click += new System.EventHandler(this.OnOffButton_Click);this.ResumeLayout(false);}

 

然后生成解决方案。就可以在工具箱里看到组件了。

将组件拖入Form中就可以使用。

代码链接:https://download.csdn.net/download/hhhhhhhhhhwwwwwwwwww/14044575

 

WINFORM 自定义开关按钮控件- - 跟着阿笨一起玩.NET - 博客 ...WINFORM 自定义开关按钮控件--阿里云开发者社区 - Alibaba ...WinForm 如何自定义开关控件_AI浩-CSDN博客C#自定义开关按钮控件(WINFORM)_weixin_30439067的 ...C#自定义开关按钮控件(WINFORM)_weixin_30363509的 ...WINFORM 自定义开关按钮控件-_weixin_30417487的博客 ...WINFORM 自定义开关按钮控件-_weixin_34318272的博客 ....net winform自定义开关按钮控件_哔哩哔哩_bilibiliWinform中的开关按钮【ToggleButton】_brzee88的专栏 ...一共470多例winform 界面特效的源码推荐几个有用的iOS界面开源视图、控件470多例winform 界面特效原文地址:一共470多例winform 界面特效的源码03.PyQt5基本窗口控件part1-----PyQt5编程开发cad.net 利用win32api实现一个命令开关参照面板上位机编程工控控件全览,漂亮工控控件3月3日 winform 470多例界面特效的源码一共470多例winform 界面特…一起学习win8应用3-选择控件之ListBoxDevExpress GridControl使用Spread for Windows Forms快速入门(5)---常用的单元格类型(下)几个C#编程的小技巧 ViewState 的重点详细解释(原创)使用C#开发高性能PLC上位机监控系统服务器应用程序Atititi 软件界面gui开发之道 attilax著 1. 概览 2 1.1. 编程语言的发展 asm>native>vm>script>dsl 2 1.2....Visual C# (1) 使用windows窗体应用程序设计上下位机串口通信系统的上位机界面vs快捷键Visual Studio 2010 快捷键和小技巧VS2010快捷键大全VS2010版快捷键VS 2010 快捷键vs2010及vs2008快捷键大全vs2010快捷键(转)vs2010 快捷键大全 转vs2010 快捷键大全
爱护公物不乱涂乱画思念已故母亲七言诗如何消灭匮乏感稀缺头脑模式福州为什么手指上好长小水泡是怎么回事手指上起小水泡怎么回事是怎么引起的给你一个惊喜读后感我想给你一个惊喜神级狂婿岳风岳风柳萱免费小说阅读岳风柳萱免费阅读吻天的狼最新章节他们对我紧追不舍by望三山他们对我念念不忘小兔爷附近铁艺围栏厂家金贝辛格逃亡之路乾坤盛世咋解释盛世乾坤歌曲京东共享值在哪里查看relevant中文繁体翻译一个车一个惘的右半部这个字怎么读阿惝的意思代孕女子口述实录卷279