如何通过软件取消链接没有 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的高手们,向你们请教: Qt界面的一个控件,比如说一个GroupBox,如何在其刚开始运行时为不可见,点击按