2017-04-24 77 views
0

我目前正在c#中的winform上创建一个网上商店。有没有办法通过一个控件来控制所有单选按钮?而不是为每个单选按钮(C#)传递控制

目前我正在创建一个“购物篮”相关文本框,如果用户单击某个单选按钮,文本框会在文本框中显示该产品的说明。

我已经将组单选框中的单选按钮分组,并希望知道是否有任何相当于所有单选按钮的'SelectedIndex'命令?谢谢。

+0

订阅所有单选按钮相同的'CheckedChanged'事件。 –

+0

@DangerZone你能举一个这样的例子吗?附:一次可以选择多个单选按钮。谢谢! – TheBiz

+1

如果可以一次选择多个,则不应将它们一起包含在同一个组合框中。改为使用复选框。 –

回答

0

只需将所有单选按钮订阅到同一事件即可。然后,您可以采取行动对其进行检查并采取相应行动,而不是为每个按钮设置重复代码。
下面是一个简单的例子,设置一个文本框的Text属性来显示哪个被选中。

Form类

public partial class Form1 : Form 
{ 

    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void radioButtons_CheckedChanged(object sender, EventArgs e) 
    { 
     //Do whatever you need to do here. I'm simple setting some text based off 
     //the name of the checked radio button. 

     System.Windows.Forms.RadioButton rb = (sender as System.Windows.Forms.RadioButton); 
     textBox1.Text = $"{rb.Name} is checked!"; 
    } 
} 

在了.Designer.cs文件

//Note that the EventHandler for each is the same. 
this.radioButton3.CheckedChanged += new System.EventHandler(this.radioButtons_CheckedChanged); 
this.radioButton2.CheckedChanged += new System.EventHandler(this.radioButtons_CheckedChanged); 
this.radioButton1.CheckedChanged += new System.EventHandler(this.radioButtons_CheckedChanged); 
+0

这可以工作,有没有一种方法,我可以在列表格式的文本框中的值?所以用户点击say 3单选按钮,这会在文本框中创建3个产品的列表? 我感觉好像我可能已经复杂了,所以如果没有其他的方式,我将不得不看看使用按钮来代替。谢谢! – TheBiz

+0

@TheBiz - 首先,就像我在对问题本身的评论中提到的那样,如果可以选择多个选项,请选择除单选按钮之外的其他选项。如果他们位于表单上的同一区域,则一次只能选择1个。否则,复选框就是更好的用户体验。但是要回答你的问题,是的,只需使文本框成为多行,并在事件中根据检查的内容构建文本。 –

+0

好的,这对我来说非常合适,因为我已经对产品进行了分类,因此单选按钮可以高效地工作。然而,我已经使用你的代码和我自己的代码一起在文本框中输入一个值,但它显示的是'设计名'而不是实际的产品。我已经使用类来定义我的产品,我将如何输入这个,所以当我点击一个单选按钮时,它会显示产品而不是按钮的设计名称?谢谢(对不起,如果这是一个非常简单的问题) – TheBiz

0

如果您希望能够一次选择多个单选按钮,我建议您使用复选框而不是单选按钮。您可以将其所有事件分配给同一个事件,并控制选中哪个复选框。

private void checkBox_CheckedChanged(object sender, EventArgs e) 
    { 
     CheckBox checkBoxControl = (CheckBox) sender; // You can use this variable to see which one of the checkbox is checked. 
    }