2017-05-29 112 views
-1

我正嘗試使用Win8 GUI來構建一個簡單的'HangMan'遊戲。我用屏幕上的26個按鈕構建GUI,每個代表字母表中的一個字母。C#爲同一個方法分配幾個按鈕

我想將所有按鈕連接到相同的方法,該方法檢查按下的按鈕的值是否與所選單詞中的某個字母匹配。我已經看過這個問題的答案,應該對我有所幫助,但我認爲一個區別是我的遊戲中的所有邏輯和方法都是在不同的課程上,即「遊戲管理器」類。

How can I subscribe multiple buttons to the same event handler and act according to what button was clicked?

加上我沒有退出瞭解如何使用此解決方案,我將分配所有的按鈕就會知道哪個按鈕被按下的方法。我希望我能夠明確地解釋我的情況,如果不是,我可以提供部分代碼以便更好地理解。

+2

我會扭轉行話:如何將相同的方法分配給幾個按鈕的事件處理程序。答:就像做一個,但始終使用相同的方法名稱。然後使用'sender'參數(轉換爲按鈕)來辨別觸發事件的按鈕。 – TaW

回答

0

這是你想要的東西的一種基本方法:

static string key = "Level solution"; 
    char[] chars = key.ToCharArray(); 
    void check (object sender) 
    { 
     var button = sender as Button; 
     character = Convert.ToChar(button.Text); 
     int i = 0; 
     foreach (char c in chars) 
     { 
      //checks every character to mark them 
      if (c == character) 
      { 
       chars[i] = ' '; 
       //Makes character unusable for later use 

       //Anything you want now for true letters, for example showing pics or adding them to a label 
      } 
      i++; 
     } 
     //checks every character of key again, to see if player is won 
     int count = 0; 
     foreach (char c in chars) { 
      if (c != ' ') count++; 
      //Adds a number for anything expect space 
     } 

     if (count == 0) 
     { 
      MessageBox.Show("You won!"); 
     } 

    } 

您可以將其粘貼在你的代碼的頂部,然後在任意按鈕僅使用此代碼:

check(sender); 
+0

謝謝您的回答!但我仍然不明白點擊按鈕的值在哪裏輸入,所以這種方法或我會將它與單詞的其中一個字符進行比較。我將所有按鈕註冊到一個事件單擊,以觸發其他類中的CheckLetter函數。但我如何通過這個鏈傳遞按鈕的值來匹配它使用該方法。 – Dolev

+0

'private void CheckLetter_Click(object sender,RoutedEventArgs e) { Mng.CheckLetter(); }'' 公共BOOL CheckLetter() { 對(INT I = 0; I Dolev

+0

現在使用編輯好的方法。這個應該做你想做的。 *尚未測試 –