如何通过软件取消链接没有 GroupBox 的所有单选按钮

Posted

技术标签:

【中文标题】如何通过软件取消链接没有 GroupBox 的所有单选按钮【英文标题】:how to unlink all Radio buttons without GroupBox by software 【发布时间】:2019-09-09 23:36:57 【问题描述】:

我在表单上有一组单选按钮,它们的形状像一个矩阵(6x10)。我想通过检查它们来绘制图案或显示任何数字(我想像点阵 LED 一样使用它)。我通过软件创建单选按钮,因此我可以创建 60 个单选按钮,其中 20 个被选中,其中 40 个没有并绘制我的图案,但是当我更改图案时,我无法绘制新的,因为如果我选中一个,其他的就会变成未经检查。 我从不点击单选按钮,一切都适用于代码。

我需要单独检查它们,那么有什么方法可以检查一个单选按钮,但避免其他人从中影响并让它们保持其状态?

这就是它的样子 https://i.hizliresim.com/V9m0Vq.jpg https://i.hizliresim.com/lqmd7l.jpg

当我旋转它时,我希望所有人都向地面移动(屏幕底部) 但只有一个跌倒。

【问题讨论】:

***.com/questions/2178240/… 的逆向欺骗,但基本上建议是将控件放在不同的父容器中。 为什么不制作自己的 UserControl 来切换状态,并根据该状态绘制一个未填充/填充的圆圈? 【参考方案1】:

这是一个快速的“点”用户控件,您可以使用其 Checked() 属性打开/关闭:

public partial class Dot : UserControl


    private bool _Checked = false;
    public bool Checked
    
        get
        
            return _Checked;
        
        set
        
            _Checked = value;
            this.Invalidate();
        
    

    public Dot()
    
        InitializeComponent();
        this.DoubleBuffered = true;
        this.SizeChanged += Dot_SizeChanged;
    

    private void Dot_SizeChanged(object sender, EventArgs e)
    
        this.Invalidate();
    

    protected override void OnPaint(PaintEventArgs e)
    
        base.OnPaint(e);            
        int radius = (int)(Math.Min(this.ClientRectangle.Width, this.ClientRectangle.Height) / 2);
        if (radius > 0)
        
            double outerCircle = 0.95;
            double innerCircle = 0.80;
            Rectangle rc = new Rectangle(new Point(0, 0), new Size(1, 1));
            rc.Inflate((int)(radius * outerCircle), (int)(radius * outerCircle));
            Point center = new Point(this.ClientRectangle.Width / 2, this.ClientRectangle.Height / 2);
            e.Graphics.TranslateTransform(center.X, center.Y);
            e.Graphics.DrawEllipse(Pens.Black, rc);
            if (this.Checked)
            
                rc = new Rectangle(new Point(0, 0), new Size(1, 1));
                rc.Inflate((int)(radius * innerCircle), (int)(radius * innerCircle));
                e.Graphics.FillEllipse(Brushes.Black, rc);
            
                    
    


【讨论】:

以上是关于如何通过软件取消链接没有 GroupBox 的所有单选按钮的主要内容,如果未能解决你的问题,请参考以下文章

需上传文件的软件取消了所有的超链接,怎么可以实现跳转到指定的页面呢?

QT中如何改变GroupBox控件内部的某一类控件?

Qt的高手们,向你们请教: Qt界面的一个控件,比如说一个GroupBox,如何在其刚开始运行时为不可见,点击按

SVCI ING BAOCHI云诊断软件下载,注册,绑定和取消绑定

如何使用集合编辑器窗口在 GroupBox 中创建文本框?

如何通过使用alpine js单击一个复选框来选中和取消选中所有复选框