2011-12-18 114 views
0

我想在C#中做一個小遊戲。
程序要求用戶輸入任意數量。
然後用戶按下「GO」(按鈕1)並且程序檢查該號碼是否是偶數。 (x%2 == 0)按大小寫顯示項目(複選框,單選按鈕等...)

我試圖讓程序顯示4個複選框/單選按鈕中的總共8個,具體取決於每種情況。
例如:

  • 如果數是偶數:程序將顯示選項2,5,3,6。
  • 如果數字是一個奇數:程序將顯示選項1,4,7,8。

(選項1-8已經包含在設計中。)

我需要與if (x % 2 == 0)部分幫助。我寫什麼來使複選框/單選按鈕顯示或消失?

順便問一下,有沒有辦法讓用戶輸入一個數字,而不必點擊「GO」? 像,用ENTER代替。如果是的話,那是什麼事?
此外,有沒有辦法將文本框限制爲INT?

我知道這是要求你做這項工作,但我已經嘗試過,而且我仍然是一個真正的初學者,因此我認爲我的學習方式是通過實際體驗它。

public partial class Form1 : Form 
{ 
    int x; 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     x = int.Parse(textBox1.Text); 
     if (x % 2 == 0) 
     { 
     } 
    } 
} 

回答

1

CheckBoxVisible屬性(繼承自Control)將幫助您在需要時使所需控件可見。你是否會看起來像,

if (num % 2 == 0) 
{ 
    box1.Visible = false; 
    box2.Visible = true; 
    // ... 
} 
else 
{ 
    box1.Visible = true; 
    box2.Visible = false; 
    // ... 
} 

然而,這可以通過使用條件在同一時間,而不是編碼2個條件語句來設置所有的CheckBox S的知名度進行優化一點 - 是這樣的:

box1.Visible = !(num % 2 == 0); 
box2.Visible = (num % 2 == 0); 
// ... 

至於按下輸入,檢查OnKeyDown事件爲你控制,你可以通過設計人員做到這一點。你的事件方法如下:

private void myControl_OnKeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.Enter) 
    { 
     // Handle enter key pressed here 
    } 
} 

這應該可以幫助你解決你的問題。

另外一些應對

List<CheckBox> boxes = new List<CheckBox>(); 
// Add all boxes and do other stuff, disable all 

foreach (CheckBox box in boxes) 
{ 
    box.Visible = false; 
} 
+0

感謝,順便說一下,有沒有辦法可以完全隱藏所有的箱子嗎?而不是爲所有人寫'box1.Visible = false; box2.Visible = false'? – Asaf 2011-12-18 19:41:24

+0

把它們扔到一個通用列表中('List boxes')並使用'foreach'循環。我會爲答案添加一段代碼。 – 2011-12-18 20:30:09

0

爲了將文本框限制爲int,您可以覆蓋OnKeyPressed。至於你的複選框,你可以使用VisibleChecked屬性。