2014-02-07 2 views
0

В настоящее время я выполняю задание на игре в палач, и вам нужно закодировать кнопки, есть ли способ кодировать все кнопки в цикле вместо того, чтобы их кодировать один за другим?Как иметь возможность генерировать разные кнопки алфавита с одинаковой функцией?

Вот как один из них выглядит как (я использую окна образуют КСТАТИ):

(каждая кнопка представляет собой букву алфавита, цифрами, было бы проще)

private void A_Click(object sender, EventArgs e) 
{ 
    guess = "A"; 
    A.Enabled = false; 
    GuessCheck(); 
} 
+1

Возможно, вам нужно указать среду, с которой вы программируете. Обычно он отличается от HTML, чем в WPF или WinForms. –

+0

Пример для WinForms (который, как представляется, используется вами): http://www.codeproject.com/Articles/131696/Easy-Code-to-Create-Button-Array – Heinzi

ответ

1

Это должно сделать трюк:

private string guess = ""; 

    public void GuessCheck() 
    { 
     System.Windows.Forms.MessageBox.Show("You clicked letter " + guess); 
    } 


    private void Any_Click(object sender, EventArgs e) 
    { 
     System.Windows.Forms.Button b = (System.Windows.Forms.Button)sender; 
     b.Enabled = false; 
     guess = b.Text; 
     GuessCheck(); 
    } 


    private void Form1_Load(object sender, EventArgs e) 
    { 
     int top = 50; 
     int left = 100; 

     for (int i = 'A'; i <= 'Z'; ++i) 
     { 
      var b = new System.Windows.Forms.Button(); 
      b.Text = System.Convert.ToChar(i).ToString(); 
      b.Name = "btn" + b.Text; 
      b.Left = left; 
      b.Top = top; 
      left += b.Width + 2; 
      b.Click += Any_Click; 
      this.Controls.Add(b); 
     } // Next i 

    } // End Sub Form1_Load 

VB.NET

Private guess As String = "" 

Public Sub GuessCheck() 
    System.Windows.Forms.MessageBox.Show(Convert.ToString("You clicked letter ") & guess) 
End Sub ' GuessCheck 


Private Sub Any_Click(sender As Object, e As EventArgs) 
    Dim b As System.Windows.Forms.Button = DirectCast(sender, System.Windows.Forms.Button) 
    b.Enabled = False 
    guess = b.Text 
    GuessCheck() 
End Sub ' Any_Click 


Private Sub Form1_Load(sender As Object, e As EventArgs) 
    Dim top As Integer = 50 
    Dim left As Integer = 100 

    For i As Integer = AscW("A"c) To AscW("Z"c) 
     Dim b = New System.Windows.Forms.Button() 
     b.Text = System.Convert.ToChar(i).ToString() 
     b.Name = "btn" + b.Text 
     b.Left = left 
     b.Top = top 
     left += b.Width + 2 
     AddHandler b.Click, AddressOf Any_Click 
     Me.Controls.Add(b) 
    Next i 

End Sub ' Form1_Load 
+0

@ user3154509: Это хорошее предложение. Вы также можете позиционировать свои кнопки вручную с помощью конструктора, реализовать метод «Any_Click», а затем назначить событие Click каждой кнопки «Any_Click» –

Смежные вопросы