如何实现radiobutton的单选呢?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何实现radiobutton的单选呢?相关的知识,希望对你有一定的参考价值。

很简单的问题.

比如有 (男 ,女)两个选项
选了男,女就不选.选了女,男就不选.
请问如何实现呢?

我写的checkedchanged事件为什么不行呢.
比如在radiobutton1里添加checkedchanged事件,在里面添加radiobutton2.checked=false;

为什么是错的呢?
radiobuttonlist其实可以实现单选,但是它是把选项都竖着放的.

我看网页上那些都是横着放的啊...还有貌似别人都是用的两个radiobutton嘛```

求教用两个radiobutton如何实现单选呢?

1楼的朋友,恐怕不是你说的这样的吧``?你试试?

一个单选按钮菜单项的实现。RadioButtonMenuItem 是属于一组菜单项中的一个菜单项,该组中只能选择一个项。被选择的项显示其选择状态。选择此项的同时,其他任何以前被选择的项都切换到未选择状态。
您可以启用或禁用菜单项。在启用状态下,可以使用下列按键来控制它:

键     说明

组合键    直接调度菜单项的鼠标事件,而不必显示菜单的层次结构。

以下示例演示添加单选按钮菜单项到菜单,并通过单击面板来显示菜单。
从"库"面板中拖动面板组件到舞台(或直接通过 ActionScript 代码创建组件实例),并对实例命名。
由于菜单组件不需要参与布局,建议直接通过 ActionScript 代码创建组件实例。在主时间轴中选择第一帧,打开"动作"面板,然后输入以下代码:
import flash.events.MouseEvent;
import shinater.swing.MenuItem;
import shinater.swing.RadioButtonMenuItem;
import shinater.swing.Menu;

var smallItem:RadioButtonMenuItem = new RadioButtonMenuItem("Small Font");
smallItem.setGroupName("fontSizeGroup");
var mediumItem:RadioButtonMenuItem = new RadioButtonMenuItem("Medium Font");
mediumItem.setGroupName("fontSizeGroup");
mediumItem.setSelected(true);
var largeItem:RadioButtonMenuItem = new RadioButtonMenuItem("Large Font");
largeItem.setGroupName("fontSizeGroup");
var my_menu:Menu = new Menu();
my_menu.addMenuItem(smallItem);
my_menu.addMenuItem(mediumItem);
my_menu.addMenuItem(largeItem);
my_menu.addSeparator();
var boldItem:RadioButtonMenuItem = new RadioButtonMenuItem("Bold");
boldItem.setGroupName("fontStyleGroup");
var normalItem:RadioButtonMenuItem = new RadioButtonMenuItem("Normal");
normalItem.setGroupName("fontStyleGroup");
normalItem.setSelected(true);
my_menu.addMenuItem(boldItem);
my_menu.addMenuItem(normalItem);
my_panel.addEventListener(MouseEvent.CLICK, function(evt:MouseEvent)
my_menu.show(my_panel, my_panel.mouseX, my_panel.mouseY);
);

参考资料:http://www.oschina.net/question/579595_67445
参考技术A RadioButton里有这个属性 ,
GroupName你将这个属性全部设成一样就可以了。
参考技术B 你需要个容器空间panel或者groupbox才可以,把2个radiobutton放进去可以组成逻辑,否则你的2个都可以选本回答被提问者采纳 参考技术C 不需要checkedchanged事件吧 当程序运行后 你选择其中的一个radiobutton 另外一个radiobutton就自动不选了赛。

如何防止在表单加载时检查 RadioButton?

【中文标题】如何防止在表单加载时检查 RadioButton?【英文标题】:How can I prevent a RadioButton from being checked when the Form loads? 【发布时间】:2011-10-08 17:49:15 【问题描述】:

我似乎无法阻止我的表单检查Group Box 中的单选按钮之一:

如设计器中所示,此处未选中任何单选按钮

下面是这个简单表单的所有代码。无需在此处或在表单设计器中检查单选按钮

问:有没有办法防止在加载表单时检查任何单选按钮

public ValueTypeSelector() 
  InitializeComponent();
  radioButton1.Checked = false;
  radioButton2.Checked = false;
  radioButton3.Checked = false;
  radioButton4.Checked = false;
  radioButton5.Checked = false;
  radioButton6.Checked = false;
  button1.Enabled = false;
  button1.Click += clickEvent;
  button2.Click += clickEvent;
  radioButton1.Click += clickEvent;
  radioButton2.Click += clickEvent;
  radioButton3.Click += clickEvent;
  radioButton4.Click += clickEvent;
  radioButton5.Click += clickEvent;
  radioButton6.Click += clickEvent;


void OnShow(object sender, EventArgs e) 
  foreach (RadioButton rad in Controls) 
    if (rad.Checked) 
      Console.WriteLine("WTF?");
    
  


void clickEvent(object sender, EventArgs e) 
  RadioButton rad = sender as RadioButton;
  if (rad != null) 
    if (rad.Checked) 
      if (rad == radioButton1) 
        DataType = TableDataType.Boolean; // <= HERE IS THE PROBLEM! FIRES ON FORM LOAD
       else if (rad == radioButton2) 
        DataType = TableDataType.Character;
       else if (rad == radioButton3) 
        DataType = TableDataType.DateTime;
       else if (rad == radioButton4) 
        DataType = TableDataType.Decimal;
       else if (rad == radioButton5) 
        DataType = TableDataType.Integer;
       else if (rad == radioButton6) 
        DataType = TableDataType.String;
       else 
        return;
      
      button1.Enabled = true;
    
   else if (sender == button1) 
    DialogResult = DialogResult.OK;
    Close();
   else if (sender == button2) 
    DialogResult = DialogResult.Cancel;
    Close();
  

更新:问题是radioButton1 在显示表单时被检查:

      if (rad == radioButton1) 
        DataType = TableDataType.Boolean; // <= HERE IS THE PROBLEM! FIRES ON FORM LOAD
       else if (rad == radioButton2) 

【问题讨论】:

添加一些单选按钮,使其不可见:) 哈哈。我宁愿控制我的代码! 【参考方案1】:

确保您的单选按钮不是第一个 tabindex = 0 控件。使 OK 按钮 tabindex=0,然后是单选按钮。

【讨论】:

啊哈!我知道它必须是这样简单的东西!谢谢。 @jp2code 或在设计器中将单选按钮的 AutoCheck 属性设置为 false,然后在构造函数中将其设置为 true。这似乎也行得通。 还有更简单的解决方案。检查我的答案区域中的评论。 我只想说这是一个非常愚蠢的错误。谢谢! @jp2codeThis 绝对有效,但不必在设计器中完成。也可以通过编程方式完成:radioButton1.AutoCheck = false;【参考方案2】:

在设计模式中,您会发现 AutoCheck 属性设置为 true。把它变成假的就行了。直到您在运行时手动选择它才会被检查。

【讨论】:

我正在尝试编辑我的内容,但它不允许我这样做。将 AutoDropAutoCheck 保持为 true 可以满足您的要求。 我想这会奏效。通过这样做,我必须在 clickEvent 处理程序的代码中明确检查 Radio Button,对吗? 是的。您可以通过代码或 UI 检查单选按钮。您可以在 CheckedChanged 事件中处理更改。 谢谢!我可能使用了 LarsTech 的回复作为答案,但我在这个帖子中给了你 4 个不同的赞成票。 这不是问题。我很高兴能提供帮助。【参考方案3】:

在属性中设置TabStop=False

【讨论】:

【参考方案4】:

在表单加载后将选中状态设置为 false。把它放在 Shown 事件中,看看它是否有效。

【讨论】:

这是我试图避免的蛮力技术。 LarsTech 的原始答案是完成我需要的最快的,尽管 SaravananArumugam 的答案可能从 Coder 的角度来看更正确。【参考方案5】:

我认为这实际上可能是 VS 中的一个错误。我使用的是 2010 SP1,但 OP 没有提及他们使用的是哪个版本。

在我的一个应用程序中发生了同样的幻象。

将两个单选按钮的 Autochecked 更改为 False,构建了应用程序。现在没有选择受影响的按钮,但现在选择了以前不受影响的其他按钮。

回到代码并在原始按钮上将自动检查设置为 true,然后在新受影响的按钮上从 true 切换为 false,然后再次返回。重新运行,应用程序很好;没有选择任何按钮。

当我第一次检查原始单选按钮的 tabIndexes 时,它们被设置为 tabIndex 0;我改变了,所以这也可能是混合的一部分。

【讨论】:

我没有提到它,但它确实有visual-studio-2010 标签。这里的版主责备人们在主题中发布带有标签的问题。我认为愚蠢的 *** 规则。

以上是关于如何实现radiobutton的单选呢?的主要内容,如果未能解决你的问题,请参考以下文章

WPF中将RadioButton的单选框画成方框

带有 React 的单选按钮

C# 中如何将不同组的radiobuton设置成单选。。。

Android中。如何用RadioButton设定一个4列12行的单选表格。

Android从选定的单选按钮获取价值

“onRadioButtonClicked”方法不适用于“onCreate”方法实现的单选按钮