2013-09-16 87 views
1

我有一個程序根據選定的單選按鈕(用戶選擇)以兩種不同的方式執行代碼。我的問題是我無法得到用戶選擇的內容,也就是說,根據單選按鈕的選擇,它假定以不同方式執行的代碼,該代碼段不會執行。使用單選按鈕

這裏是我做了什麼: -

這是我確定已經從單選按鈕選擇哪些用戶

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); 
    } 
} 

我試着將值直接分配給變量部分,而不從單選按鈕中取出,然後工作。所以我相信這是使用單選按鈕時分配的。

謝謝你的時間。

+5

當你的表單第一次打開時,用戶沒有機會選擇一個,你需要創建一個選擇改變的事件,btw'else if'在兩行上可能會創建一個嵌套的if聲明而不是'elseif或else' – Sayse

+0

你可以顯示RadioButton事件的代碼嗎? –

+0

我沒有爲單選按鈕創建任何更改事件,所以我會嘗試創建它們。再次感謝 :) –

回答

4

你唯一的一條被選中時,你的形式第一次打開,用戶沒有得到機會選擇一個檢查,你需要在兩行創建了一個選擇改變事件

順便說一句,else if可能創建一個嵌套的if語句而不是else ifelse。你能做到這一點是

的一種方式,

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; 
} 

在設計模式單選按鈕,否則雙擊。