关于 RadioButton 的问题

huangyj 2006-12-06 11:25:03
由于 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();
}
...全文
164 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Csharp110 2006-12-08
  • 打赏
  • 举报
回复
学习中,帮定!
qltouming 2006-12-08
  • 打赏
  • 举报
回复
哦,另外OnClick里你丢了 object sender参数,这是不行滴。
qltouming 2006-12-08
  • 打赏
  • 举报
回复
m_group是你新定义的的属性吧?那么应该是
protected override void OnClick(System.EventArgs e)
{
MyRadioButton mrButton = (MyRadioButton)e.Item;
if( mrButton.strCommand != string.Empty )
{
base.OnClick(e);
}
else
……//以下自己修改下试试
KJ_Wang 2006-12-08
  • 打赏
  • 举报
回复
多试试吧,本人碰到的基本都可以解决,没明白你要用这个来做什么?如果真有需要,可以给我发消息,也许我真能帮你.
huangyj 2006-12-07
  • 打赏
  • 举报
回复
大家都如何处理此问题的呢?
huangyj 2006-12-06
  • 打赏
  • 举报
回复
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();
}

}
huangyj 2006-12-06
  • 打赏
  • 举报
回复
哦,这个是重写了 RadioButton 的类里面的内容。
Tenner 2006-12-06
  • 打赏
  • 举报
回复
this.Group
this.Checked
这里的 this 表示的当前窗体吧
窗体哪里来的 Group 和 Checked ?
huangyj 2006-12-06
  • 打赏
  • 举报
回复
你在哪里看到 RadioButton 有这个属性呢?
huangyj 2006-12-06
  • 打赏
  • 举报
回复
哦?这个属性可以吗?
zhaochong12 2006-12-06
  • 打赏
  • 举报
回复
设置ValidationGroup属性不就行了?.. 为什么要重写呢?..

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧