我制作了一个程序,用户可以使用单选按钮选择目的地。我的问题是,即使用户选择“1”作为目的地,程序也将其识别为“2”。
这就是我所做的:
public partial class Airplane_Simulation : Form
{
private String status="";
public Airplane_Simulation()
{
InitializeComponent();
CheckedChanged();
rbOne.CheckedChanged += (s,e) => { CheckedChanged(); };
rbTwo.CheckedChanged += (s, e) => { CheckedChanged(); };
//more codes here
}
public void CheckedChanged()
{
status = rbOne.Checked ? rbOne.Text : rbTwo.Text;
}
}
这里似乎有什么问题?我已经使用if条件来检查哪一个被检查但是我仍然只选择“2”。
感谢您的时间。
答案 0 :(得分:0)
如果您想在每次点击复选框时更改status
,这可能对您有所帮助。
private void Form1_Load(object sender, EventArgs e)
{
rbOne.Click += (s, o) => { status = rbOne.Text; };
rbTwo.Click += (s, o) => { status = rbTwo.Text; };
}
答案 1 :(得分:-1)
首先,单个等号是分配而不是检查是否相等。 你应该使用两(2)个等号。
然后我会使用rbOne.IsChecked
属性来查看是否检查了控件。
rbOne.Checked
是一个不是财产的事件。
编辑:
以上内容可用于WPF。以下是我在Windows窗体中的内容:
public Form1()
{
InitializeComponent();
rbOne.Click += new EventHandler(radioButton_Click);
rbTwo.Click += new EventHandler(radioButton_Click);
}
public void radioButton_Click(object sender, EventArgs e)
{
status = rbOne.Checked ? rbOne.Text : rbTwo.Text;
}
我不会使用CheckedChanged事件,因为当您选择其他单选按钮时,它将被调用两次。