我有一个程序,它根据所选的单选按钮(用户的选择)以两种不同的方式执行代码。我的问题是无法获得用户选择的内容,这意味着代码所在的代码基于单选按钮的选择以不同的方式执行,代码段不会执行。
以下是我所做的: -
这是我确定用户从单选按钮
中选择了什么的部分public Airplane_Simulation()
{
InitializeComponent();
if (rbZero.Checked==true) //checks whether it is selected
{
section = rbZero.Text; //if true assigns it's text to a variable.
}
else if (rbOne.Checked == true)
{
section = rbOne.Text;
}
semaphore = new Semaphore();
buff = new Buffer();
btnPnlT1 = new ButtonPanelThread(new Point(40, 5), 50, pnlArrival, false, Color.Red, semaphore, buff, btnGo);
waitingTakeOff = new waitPanels(new Point(490, 5), 50, pnlTakeOff, false, Color.Green, semaphore, buff,section);
thread1 = new Thread(new ThreadStart(btnPnlT1.start));
thread3 = new Thread(new ThreadStart(waitingTakeOff.start));
thread1.Start();
thread3.Start();
}
这是应该根据用户选择执行的代码
if(section.Equals("0")) //if the variable match 0 it should this code
{
for (int k = 0; k < 15; k++)
{
panel.Invalidate();
this.movePlane(xDelta, yDelta);
Thread.Sleep(delay);
}
}
else if (section.Equals("1")) // if variable matches 1 it
// should execute this code
{
for (int k = 0; k < 40; k++)
{
panel.Invalidate();
this.movePlane(xDelta, yDelta);
Thread.Sleep(delay);
}
}
我尝试将值直接分配给变量部分而不从单选按钮获取然后它工作。所以我确信这与使用单选按钮时分配有关。
感谢您的时间。
答案 0 :(得分:4)
您的唯一选择在您的表单首次打开时选择哪一个,用户没有机会选择一个,您需要创建一个选择更改事件
顺便说一下,两行上的else if
可能会创建一个嵌套的if语句,而不是else if
或else
。
您可以这样做的一种方法是,
public Airplane_Simulation()
{
InitializeComponent();
CheckedChanged();
rbZero.CheckedChanged += (s,e) => { CheckedChanged(); }
rbOne.CheckedChanged += (s,e) => { CheckedChanged(); }
public void CheckedChanged()
{
section = rbZero.Checked ? rbZero.Text : rbOne.Text;
}
否则,请在设计模式中双击单选按钮。