C# Radiobutton类-需要将Radiobutton分组
我创建了自己的单选按钮类–即MyRadioButton,因为内置的.NET类没有有效地扩展。(用于触摸屏) MyRadioButton类工作得很好,除了我不知道如何解决的问题之外——当我在一个表单上有多个MyrDaiObButton时,我可以选择所有这些按钮。。。。它们在某种程度上不能正常工作,当一方选择一方时,另一方会自动被取消选择 我的代码如下:C# Radiobutton类-需要将Radiobutton分组,c#,C#,我创建了自己的单选按钮类–即MyRadioButton,因为内置的.NET类没有有效地扩展。(用于触摸屏) MyRadioButton类工作得很好,除了我不知道如何解决的问题之外——当我在一个表单上有多个MyrDaiObButton时,我可以选择所有这些按钮。。。。它们在某种程度上不能正常工作,当一方选择一方时,另一方会自动被取消选择 我的代码如下: public class MyRadioButton : Control { public MyRadioButton() {
public class MyRadioButton : Control
{
public MyRadioButton()
{
}
private string textTowrite;
private bool checkStatus;
private int width;
private int height;
public event EventHandler CheckedChanged;
public delegate void MyHandler1(object sender, EventArgs e);
protected override void OnClick(EventArgs e)
{
base.OnClick(e);
if (Checked)
Checked = false;
else
Checked = true;
Invalidate(true);
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
ButtonState btnstate;
Rectangle rRadioButton;
if (checkStatus)
{
btnstate = ButtonState.Checked;
}
else
btnstate = ButtonState.Normal;
rRadioButton = new Rectangle(0, 0, RBWidth, RBHeight);
FontFamily ft = new FontFamily("Tahoma");
Font fnt_radio = new Font(ft, (int)(18), FontStyle.Bold);
ControlPaint.DrawRadioButton(e.Graphics, -2, 10, rRadioButton.Width,
rRadioButton.Height, btnstate);
//RadioButton's text left justified & centered vertically
e.Graphics.DrawString(textTowrite, fnt_radio, new SolidBrush(Color.Black), rRadioButton.Right + 1, 16);
}
protected virtual void OnCheckedChanged(EventArgs e)
{
if (CheckedChanged != null)
{
CheckedChanged(this, e);
}
}
public override string Text
{
get { return textTowrite; }
set { textTowrite = value; }
}
public bool Checked
{
get { return checkStatus; }
set
{
checkStatus = value;
OnCheckedChanged(EventArgs.Empty);
}
}
public int RBWidth
{
get
{
if (width == 0)
{
width = 40;
}
return width;
}
set
{
if (width != value)
{
width = value;
Invalidate();
}
}
}
public int RBHeight
{
get
{
if (height == 0)
{
height = 40;
}
return height;
}
set
{
if (height != value)
{
height = value;
Invalidate();
}
}
}
}
如果有人能为我提供解决方案,我将不胜感激,因为我正在拔头发
谢谢
Jens由于这是您的控件,您必须提供逻辑,使其像单选按钮一样工作 首先,我建议将所有单选按钮放入容器控件中
然后,在您的控件的开始<代码> OnClick <代码>方法中,使用<代码> GETCubEngultEngult方法检索容器对象并遍历容器中的所有单选按钮,并将其选中的属性设置为false。
< P>您还可以考虑直接从<代码> NaveButtudio>代码>继承控件。允许您访问RadioButton.GroupName
属性,或者您需要自己实现kbrinley发布的此类功能。您是否考虑过在RadioButton
控件上使用图像?根据的文档(继承自):
要使用派生按钮控件
显示图像,设置
财产或财产;及
财产
请注意,我不知道如何使用图像执行选定/未选定状态。。。我想ImageList与此相关。如果我直接从RadioButton继承控件,OnPaint函数将绘制较大的RadioButton(我想要的那个),以及原来较小的单选按钮。这就是为什么我要写我自己的。正确,这是你将完全覆盖的事件。