由于 RadioButton  在C# WinForm中需要用Panel或者GroupBox来分组
对于界面上如果比较多的选择类型的信息,就不是很方便
所以想重写一下 RadioButton,在其中添加一个 Group 的属性,
然后修改 OnClick 方法 来对其修改以达到分组的目的,代码如下:
但是与没有重写时的效果一样
对这个不熟悉,请XD们帮忙看看如何写才是正确的。
protected override void OnClick(System.EventArgs e)
{
if (m_group == "")
{
base.OnClick(e);
}
else
{
foreach (Control ctrl in Parent.Controls)
{
if (ctrl is LEDradioButton)
{
if(((LEDradioButton)ctrl).Group == this.Group)
((LEDradioButton)ctrl).Checked = false;
}
}
this.Checked = true;
}
Invalidate();
}

解决方案 »

  1.   

    this.Group
    this.Checked
    这里的 this 表示的当前窗体吧
    窗体哪里来的 Group 和 Checked ?
      

  2.   

    哦,这个是重写了 RadioButton 的类里面的内容。
      

  3.   

    public class LEDradioButton : System.Windows.Forms.RadioButton
    {
    protected override void OnClick(System.EventArgs e)
    {
    if (m_group == "")
    {
    base.OnClick(e);
    }
    else
    {
    foreach (Control ctrl in Parent.Controls)
    {
    if (ctrl is LEDradioButton)
    {
    if(((LEDradioButton)ctrl).Group == this.Group)
    ((LEDradioButton)ctrl).Checked = false;
    }
    }
    this.Checked = true;
    }
    Invalidate();
    }}
      

  4.   

    设置ValidationGroup属性不就行了?.. 为什么要重写呢?..
      

  5.   

    你在哪里看到 RadioButton 有这个属性呢?
      

  6.   

    m_group是你新定义的的属性吧?那么应该是
    protected override void OnClick(System.EventArgs e)
    {
    MyRadioButton mrButton = (MyRadioButton)e.Item;
    if( mrButton.strCommand != string.Empty )
    {
    base.OnClick(e);
    }
    else
    ……//以下自己修改下试试
      

  7.   

    哦,另外OnClick里你丢了 object sender参数,这是不行滴。