我在表单上有一组单选按钮,它们的形状像矩阵(6x10)。我想通过检查它们来绘制图案或显示任何数字(我想像点阵led一样使用它)。我通过软件创建单选按钮,因此我可以创建60个单选按钮,其中的20个被选中,其中40个未被选中,然后绘制我的图案,但是当我更改图案时,我无法绘制新的单选按钮,因为如果我选中一个,其他则变成未经检查。 我从不单击单选按钮,所有代码均有效。
我需要分别检查它们,所以有什么方法可以检查一个单选按钮,但要避免其他按钮从此生效并让它们保持其状态?
这是它的样子 https://i.hizliresim.com/V9m0Vq.jpg https://i.hizliresim.com/lqmd7l.jpg
当我旋转它时,我希望所有人都向地面移动(屏幕底部) 但只有其中一个跌倒了。
答案 0 :(得分:0)
这是一个快速的“点”用户控件,您可以使用其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);
}
}
}
}