2012-11-25 34 views
0

我正在製作一個隨機字符生成器,​​我有2個窗體,form1和form2,在我的form2上我有複選框,所以如果用戶選中了checkbox1,我的form1上只顯示1個字符,現在如果用戶檢查所有5個複選框,我的form1將生成5個字符。我在form1上有一個按鈕,它會觸發生成隨機字符的事件。如何在複選框被選中時將值賦給數組? C#?

字符: '+', ' - ', '*', '/', '%'

如何將我的代碼是什麼?我正在使用 WINDOWS表單應用程序。

圖片瀏覽: Form1中:http://i49.tinypic.com/30bzos8.png 窗口2:http://i50.tinypic.com/k00ndt.png

 char[] select = new char[] { '+' , '-' , '*' , '/', '%' }; 
     var rand = new Random(); 
     char num = select[rand.Next(5)]; 
+0

你嘗試過什麼?我們希望看到一些嘗試使用代碼來了解您的思維過程。這也使問題更「回答友好」。另外,你想在數組中放置什麼值? – apnorton

+0

我已發表我的密碼在desription先生/女士。 –

+0

這就是問題所在,我不知道我會怎麼做才能生成角色。我可以很容易地輸入它們,但是我的form2上有一個複選框,所以如果添加(複選框)被選中,只有當我按下form1上的按鈕時,它纔會顯示'+'。 –

回答

0

這種情況總是有趣的,因爲我們不知道你有什麼與否已覆蓋類。所以根據我上面提到的上面的註釋,你給出了相互矛盾的答案,我將假設Form1正在Form1的構造函數中創建。 您將需要某種方法來確定哪些組合框被選中,我只是XOR二進制值,正如我在我的評論中所說的那樣,我將用ShowDialog啓動Form2並查看返回值以確定它是否退出或繼續。我會給你一個快速和骯髒的例子,它是由你來充實。如果不是這種情況下,你將需要發佈更多一點代碼

Form1中

public partial class Form1 : Form 
{ 
    char[] operators; 

    public Form1() 
    { 
     InitializeComponent(); 
     Form2 frm2 = new Form2(); 
     if (frm2.ShowDialog() == DialogResult.OK) //Check for DialogResult Here 
     { 
      operators = CreateArray(frm2.GetOperators); // Get ComboBox Values from Form2 and Process them 
      frm2.Close();     // Close Form2 
     } 
     else 
      Application.Exit();   // If DialogResult is not OK then exit Form 
    } 

    private char[] CreateArray(int value) 
    { 
     string num = ""; 
     if ((value & 1) == 1) 
      num += "+"; 
     if ((value & 2) == 2) 
      num += "-"; 
     if ((value & 4) == 4) 
      num += "*"; 
     if ((value & 8) == 8) 
      num += "/"; 
     if ((value & 16) == 16) 
      num += "%"; 

     return num.ToCharArray(); 
    } 
} 

窗體2

public partial class Form2 : Form 
{ 
    int operators; 
    public Form2() 
    { 
     InitializeComponent(); 
    } 

    private void checkBox_CheckedChanged(object sender, EventArgs e) 
    { 
     CheckBox cb = (CheckBox)sender; 
     //Method that I used for determining CheckBox State. You can use a boolean array or an Enumeration .... 
     if (cb.Text == "Addition") 
      operators = operators^1; 
     else if (cb.Text == "Subtraction") 
      operators = operators^2; 
     else if (cb.Text == "Multiplication") 
      operators = operators^4; 
     else if (cb.Text == "Division") 
      operators = operators^8; 
     else if (cb.Text == "Modulus") 
      operators = operators^16; 

    } 
    public int GetOperators  //Property for return value to Form1 
    { 
     get { return operators; } 
    } 
} 
+0

先生,如果你想看到它,這是我的作業副本。不介意提交日期等。https://www.dropbox.com/s/9wxyq6ltsowjc9m/Programming%20Assignment%201.pdf?fb=1&fb_action_ids=4506187368006&fb_action_types=dropboxdropbox%3Aupdate&fb_source=other_multiline&action_object_map=%7B%224506187368006%22%3A425658030823493% 7D&action_type_map =%7B%224506187368006%22%3A%22dropboxdropbox%3Aupdate%22%7D&action_ref_map =%5B%5D –

+0

@JanDarrenNoroña我給了我應該的工作,我所做的是追加單個運算符字符串(如何將它們從Form形式),然後使用String.ToCharArray,這將創建您的 陣列 –

相關問題