首页 > 编程语言 >C# WinForm给ToolStrip工具栏扩展一个CheckBox单选框类型按钮的方法

C# WinForm给ToolStrip工具栏扩展一个CheckBox单选框类型按钮的方法

时间:2024-06-24 09:54:44浏览次数:27  
标签:CheckBox 工具栏 单选框 preferredSize IsChecked base pLocation public Size

    [ToolStripItemDesignerAvailability(ToolStripItemDesignerAvailability.ToolStrip)]
    public partial class ToolStripCheckBox : ToolStripItem
    {
        private bool IsChecked = false;

        public bool HasChecked
        {
            get
            {
                return IsChecked;
            }
            set
            {
                IsChecked = value;
                this.Invalidate();
            }
        }

        public ToolStripCheckBox()
        {
            InitializeComponent();
        }

        public override Size GetPreferredSize(Size constrainingSize)
        {
            base.GetPreferredSize(constrainingSize);
            Size preferredSize = base.GetPreferredSize(constrainingSize);
            preferredSize.Width += 13; 
            return preferredSize;
        }

        protected override void OnClick(EventArgs e)
        {
            IsChecked = !IsChecked;
            base.OnClick(e);
        }

        protected override void OnPaint(PaintEventArgs e)
        {
            if (base.Owner != null)
            {
                Point pLocation = new Point(e.ClipRectangle.X, e.ClipRectangle.Height / 2 - (13 / 2));
                Size txtSize = TextRenderer.MeasureText(this.Text, this.Font);
                Rectangle rectText = new Rectangle(pLocation.X + 13, pLocation.Y, txtSize.Width, txtSize.Height);
                CheckBoxState chkState = IsChecked ? CheckBoxState.CheckedNormal : CheckBoxState.UncheckedNormal;
                CheckBoxRenderer.DrawCheckBox(e.Graphics, pLocation, rectText, this.Text, this.Font, false, chkState);
            }
            
        }

    }

  

标签:CheckBox,工具栏,单选框,preferredSize,IsChecked,base,pLocation,public,Size
From: https://www.cnblogs.com/LuoCore/p/18264427

相关文章

  • 鸿蒙ArkTS声明式组件:【Checkbox】
    Checkbox提供多选框组件,通常用于某选项的打开或关闭。说明:该组件从APIVersion8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。子组件无接口Checkbox(options?: {name?:string,group?:string})从APIversion9开始,该接口支持在ArkT......
  • 鸿蒙ArkTS声明式组件:【CheckboxGroup】
    CheckboxGroup多选框群组,用于控制多选框全选或者不全选状态。说明:该组件从APIVersion8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。子组件无接口CheckboxGroup(options?:{group?:string})创建多选框群组,可以控制群组内的Checkbox......
  • PyQT5之菜单栏和工具栏
    fromPyQt5importQtWidgetsfromPyQt5importQtCore,QtGuiimportsysimportcv2classButtonPanel(QtWidgets.QWidget):def__init__(self,*args,**kwargs):super().__init__(*args,**kwargs)select_btn=QtWidgets.QPushButton("图......
  • 前端菜鸡流水账日记 -- checkbox二级菜单滚动条设置
    下午好哇,今天二更咯,这次想说的是一个ElemenuUI中的一个组件--checkbox多选框,管网的地址是https://element.eleme.cn/#/zh-CN/component/installation,关于这个的具体的写法,感兴趣的小伙伴可以去管网看看,很快就能找到的我今天要记录的是关于他的二级菜单当盒子的内容过多时,超......
  • PyQT5之Checkbox
    """复选框"""importos.pathfromPyQt5importQtWidgetsfromPyQt5importQtCore,QtGuiimportsysimportcv2classButtonPanel(QtWidgets.QWidget):def__init__(self,*args,**kwargs):super().__init__(*args,**k......
  • 记录一下LogicFlow流程图在vue3中的简单使用,配置左侧菜单工具栏和右键菜单
     最终的效果配置画布首先通过npm安装LogicFlownpminstall@logicflow/core--save在vue页面引用LogicFlow和cssimportLogicFlowfrom"@logicflow/core";import"@logicflow/core/dist/style/index.css"; 创建div容器并添加ref<divid="container"ref=......
  • elementPlus+vue3易踩的坑之el-radio单选框:为什么默认选项都被勾选了?
    出错的效果:选项都被选中了......明明是从elementplus复制过来的代码(如下),怎么会出现这个情况呢?<el-radio-groupv-model="radio"> <el-radiovalue="1">通过</el-radio> <el-radiovalue="2">不通过</el-radio> </el-radio-g......
  • 响应式UI组件DevExtreme中文教程 - 工具栏的自适应模式
    DevExtreme拥有高性能的HTML5/JavaScript小部件集合,使您可以利用现代Web开发堆栈(包括React,Angular,ASP.NETCore,jQuery,Knockout等)构建交互式的Web应用程序。从Angular和Reac,到ASP.NETCore或Vue,DevExtreme包含全面的高性能和响应式UI小部件集合,可在传统Web和下一代移动应用程......
  • 响应式UI组件DevExtreme中文教程 - 工具栏的自适应模式
    DevExtreme拥有高性能的HTML5/JavaScript小部件集合,使您可以利用现代Web开发堆栈(包括React,Angular,ASP.NETCore,jQuery,Knockout等)构建交互式的Web应用程序。从Angular和Reac,到ASP.NETCore或Vue,DevExtreme包含全面的高性能和响应式UI小部件集合,可在传统Web和下一代移动应用程序中......
  • 解决wps office必须登录才能编辑使用,即解除不登录账号 工具栏 全灰色限制!
    方法步骤:1、鼠标右键点击“开始”菜单,选择“运行“,输入regedit,点击确定打开注册表编辑器。2、在打开的注册表编辑器页面,依次展开以下注册表项:\HKEY_CURRENT_USER\SOFTWARE\Kingsoft\Office\6.0\plugins\officespace\flogin3、在右侧找到 enableForceLoginForFirstInstallD......