温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C# 中怎么利用Winform自定义一个单选框

发布时间:2021-07-07 15:14:38 阅读:554 作者:Leah 栏目:大数据
Windows服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

本篇文章给大家分享的是有关C# 中怎么利用Winform自定义一个单选框,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

添加一个用户控件,命名为:UCRadioButton

看一下有哪些属性

[Description("选中改变事件"), Category("自定义")]public event EventHandler CheckedChangeEvent;private Font _Font = new Font("微软雅黑"12);[Description("字体"), Category("自定义")]public new Font Font{    get { return _Font; }    set    {        _Font = value;        label1.Font = value;    }}private Color _ForeColor = Color.FromArgb(626262);[Description("字体颜色"), Category("自定义")]public new Color ForeColor{    get { return _ForeColor; }    set    {        label1.ForeColor = value;        _ForeColor = value;    }}private string _Text = "单选按钮";[Description("文本"), Category("自定义")]public string TextValue{    get { return _Text; }    set    {        label1.Text = value;        _Text = value;    }}private bool _checked = false;[Description("是否选中"), Category("自定义")]public bool Checked{    get    {        return _checked;    }    set    {        if (_checked != value)        {            _checked = value;            if (base.Enabled)            {                if (_checked)                {                    panel1.BackgroundImage = Properties.Resources.radioButton1;                }                else                {                    panel1.BackgroundImage = Properties.Resources.radioButton0;                }            }            else            {                if (_checked)                {                    panel1.BackgroundImage = Properties.Resources.radioButton10;                }                else                {                    panel1.BackgroundImage = Properties.Resources.radioButton00;                }            }            SetCheck(value);            if (CheckedChangeEvent != null)            {                CheckedChangeEvent(thisnull);            }        }    }}private string _groupName;[Description("分组名称"), Category("自定义")]public string GroupName{    get { return _groupName; }    set { _groupName = value; }}public new bool Enabled{    get    {        return base.Enabled;    }    set    {        base.Enabled = value;        if (value)        {            if (_checked)            {                panel1.BackgroundImage = Properties.Resources.radioButton1;            }            else            {                panel1.BackgroundImage = Properties.Resources.radioButton0;            }        }        else        {            if (_checked)            {                panel1.BackgroundImage = Properties.Resources.radioButton10;            }            else            {                panel1.BackgroundImage = Properties.Resources.radioButton00;            }        }    }}
 

当选中状态改变时需要根据分组名称来做相应的处理

private void SetCheck(bool bln){    if (!bln)        return;    if (this.Parent != null)    {        foreach (Control c in this.Parent.Controls)        {            if (c is UCRadioButton && c != this)            {                UCRadioButton uc = (UCRadioButton)c;                if (_groupName == uc.GroupName && uc.Checked)                {                    uc.Checked = false;                    return;                }            }        }    }}
 

当点击时改变选中状态

private void Radio_MouseDown(object sender, MouseEventArgs e){    this.Checked = true;}
 

加载时做一下处理,防止多选了

private void UCRadioButton_Load(object sender, EventArgs e){    if (this.Parent != null && this._checked)    {        foreach (Control c in this.Parent.Controls)        {            if (c is UCRadioButton && c != this)            {                UCRadioButton uc = (UCRadioButton)c;                if (_groupName == uc.GroupName && uc.Checked)                {                    Checked = false;                    return;                }            }        }    }}
 

来看下完整的代码吧

// 版权所有  黄正辉  交流群:568015492   QQ:623128629// 文件名称:UCRadioButton.cs// 创建日期:2019-08-15 16:03:13// 功能描述:RadioButton// 项目地址:https://gitee.com/kwwwvagaa/net_winform_custom_controlusing System;using System.Collections.Generic;using System.ComponentModel;using System.Drawing;using System.Data;using System.Linq;using System.Text;using System.Windows.Forms;namespace HZH_Controls.Controls{    [DefaultEvent("CheckedChangeEvent")]    public partial class UCRadioButton : UserControl    {        [Description("选中改变事件"), Category("自定义")]        public event EventHandler CheckedChangeEvent;        private Font _Font = new Font("微软雅黑"12);        [Description("字体"), Category("自定义")]        public new Font Font        {            get { return _Font; }            set            {                _Font = value;                label1.Font = value;            }        }        private Color _ForeColor = Color.FromArgb(626262);        [Description("字体颜色"), Category("自定义")]        public new Color ForeColor        {            get { return _ForeColor; }            set            {                label1.ForeColor = value;                _ForeColor = value;            }        }        private string _Text = "单选按钮";        [Description("文本"), Category("自定义")]        public string TextValue        {            get { return _Text; }            set            {                label1.Text = value;                _Text = value;            }        }        private bool _checked = false;        [Description("是否选中"), Category("自定义")]        public bool Checked        {            get            {                return _checked;            }            set            {                if (_checked != value)                {                    _checked = value;                    if (base.Enabled)                    {                        if (_checked)                        {                            panel1.BackgroundImage = Properties.Resources.radioButton1;                        }                        else                        {                            panel1.BackgroundImage = Properties.Resources.radioButton0;                        }                    }                    else                    {                        if (_checked)                        {                            panel1.BackgroundImage = Properties.Resources.radioButton10;                        }                        else                        {                            panel1.BackgroundImage = Properties.Resources.radioButton00;                        }                    }                    SetCheck(value);                    if (CheckedChangeEvent != null)                    {                        CheckedChangeEvent(this, null);                    }                }            }        }        private string _groupName;        [Description("分组名称"), Category("自定义")]        public string GroupName        {            get { return _groupName; }            set { _groupName = value; }        }        public new bool Enabled        {            get            {                return base.Enabled;            }            set            {                base.Enabled = value;                if (value)                {                    if (_checked)                    {                        panel1.BackgroundImage = Properties.Resources.radioButton1;                    }                    else                    {                        panel1.BackgroundImage = Properties.Resources.radioButton0;                    }                }                else                {                    if (_checked)                    {                        panel1.BackgroundImage = Properties.Resources.radioButton10;                    }                    else                    {                        panel1.BackgroundImage = Properties.Resources.radioButton00;                    }                }            }        }        public UCRadioButton()        {            InitializeComponent();        }        private void SetCheck(bool bln)        {            if (!bln)                return;            if (this.Parent != null)            {                foreach (Control c in this.Parent.Controls)                {                    if (c is UCRadioButton && c != this)                    {                        UCRadioButton uc = (UCRadioButton)c;                        if (_groupName == uc.GroupName && uc.Checked)                        {                            uc.Checked = false;                            return;                        }                    }                }            }        }        private void Radio_MouseDown(object sender, MouseEventArgs e)        {            this.Checked = true;        }        private void UCRadioButton_Load(object sender, EventArgs e)        {            if (this.Parent != null && this._checked)            {                foreach (Control c in this.Parent.Controls)                {                    if (c is UCRadioButton && c != this)                    {                        UCRadioButton uc = (UCRadioButton)c;                        if (_groupName == uc.GroupName && uc.Checked)                        {                            Checked = false;                            return;                        }                    }                }            }        }    }}
 
namespace HZH_Controls.Controls{    partial class UCRadioButton    {        /// <summary>         /// 必需的设计器变量。        /// </summary>        private System.ComponentModel.IContainer components = null;        /// <summary>         /// 清理所有正在使用的资源。        /// </summary>        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>        protected override void Dispose(bool disposing)        {            if (disposing && (components != null))            {                components.Dispose();            }            base.Dispose(disposing);        }        #region 组件设计器生成的代码        /// <summary>         /// 设计器支持所需的方法 - 不要        /// 使用代码编辑器修改此方法的内容。        /// </summary>        private void InitializeComponent()        {            this.label1 = new System.Windows.Forms.Label();            this.panel1 = new System.Windows.Forms.Panel();            this.SuspendLayout();            //             // label1            //             this.label1.Dock = System.Windows.Forms.DockStyle.Fill;            this.label1.Font = new System.Drawing.Font("微软雅黑", 12F);            this.label1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(62)))), ((int)(((byte)(62)))), ((int)(((byte)(62)))));            this.label1.Location = new System.Drawing.Point(18, 0);            this.label1.Name = "label1";            this.label1.Padding = new System.Windows.Forms.Padding(5, 0, 0, 0);            this.label1.Size = new System.Drawing.Size(215, 30);            this.label1.TabIndex = 3;            this.label1.Text = "单选按钮";            this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;            this.label1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Radio_MouseDown);            //             // panel1            //             this.panel1.BackgroundImage = global::HZH_Controls.Properties.Resources.radioButton0;            this.panel1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;            this.panel1.Dock = System.Windows.Forms.DockStyle.Left;            this.panel1.Location = new System.Drawing.Point(0, 0);            this.panel1.Name = "panel1";            this.panel1.Size = new System.Drawing.Size(18, 30);            this.panel1.TabIndex = 2;            this.panel1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Radio_MouseDown);            //             // UCRadioButton            //             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;            this.Controls.Add(this.label1);            this.Controls.Add(this.panel1);            this.Name = "UCRadioButton";            this.Size = new System.Drawing.Size(233, 30);            this.Load += new System.EventHandler(this.UCRadioButton_Load);            this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Radio_MouseDown);            this.ResumeLayout(false);        }        #endregion        private System.Windows.Forms.Label label1;        private System.Windows.Forms.Panel panel1;    }}

以上就是C# 中怎么利用Winform自定义一个单选框,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

原文链接:https://my.oschina.net/dotnet9/blog/4438230

AI

开发者交流群×