2010-11-18 22 views
3

So brauche ich eine Möglichkeit für, wenn eine Person auf eine Textbox in einem 8x8 Raster von Textfeldern klickt, der Text in der Textbox, auf die sie geklickt haben, in etwas geändert wird. Mein Raster wird in einer Variablen namens textboxes[,] eingerichtet. Wenn Sie textboxes[0,0] eingeben, erhalten Sie die erste Box im Raster. Ab jetzt, mit meinem sehr begrenzten Wissen, habe ich das.Klicken Sie auf Ereignis für mehrere Textfelder

for (int i = 0; i < 8; i++) 
     { 
      for (int j = 0; j < 8; j++) 
      { 

       textboxes[i, j].Click += new EventHandler(textboxes_Click); 

      } 
     } 

Dann kann ich umgehen, wenn eines der Kästchen angeklickt wird. Wenn Sie eine bessere Möglichkeit haben, dies zu tun, würde ich es gerne hören. Ich weiß nur nicht, wie ich auf die Box zugreifen soll, die geklickt wurde, hauptsächlich den Text. Hoffe, ich habe das gut genug erklärt. Danke für die Hilfe!

-Lewis

Antwort

5

Ihr Ansatz ist gut. Sie haben nur ein paar zusätzliche Informationen zu definieren, es in dem Fall zu behandeln, wie folgt:

Wir können eine Klasse definieren die Textbox Position zu speichern:

public class GridIndex 
{ 
    //stores the position of a textbox 
    public int ipos { get; set; } 
    public int jpos { get; set; } 
} 

Ihr Stück Code sightly geändert:

for (int i = 0; i < 8; i++) 
    for (int j = 0; j < 8; j++) 
    { 
    textboxes[i, j].Click += new System.EventHandler(this.textBox_Click); 
    textboxes[i, j].Tag = new GridIndex() { ipos = i, jpos = j }; 
    } 

Und dann Handler:

private void textBox_Click(object sender, EventArgs e) 
    { 
     TextBox textBox = sender as TextBox; 

     if (textBox != null) 
     { 
      //Here your have the text of the clicked textbox 
      string text = textBox.Text; 
      //And here the X and Y position of the clicked textbox 
      int ipos = (textBox.Tag as GridIndex).ipos; 
      int jpos = (textBox.Tag as GridIndex).jpos; 
     } 
    } 

Edi t: Ich habe einige Änderungen am Code vorgenommen, bitte, überprüfen.

3

Ihre Eventhandler hat ein Objekt als Parameter aufgerufen Absender. Sie müssen es in eine TextBox umwandeln, dann können Sie den Text der Textbox abrufen.

2

Ihre Event-Handler hat die Unterschrift:

void Handler(object sender, EventArgs args) 

Wo Sender ein Verweis auf die TextBox ist, die geklickt wurde. Wenn Sie zu diesem Zeitpunkt auch i * j wissen müssen, habe ich eine Klasse erstellt, die von TextBox abgeleitet ist, in der diese Zahlen gespeichert sind.

2

Sie können die Textfeld-Werte erhalten, indem Sie den folgenden Code

TextBox txt = (TextBox) sender writting; Zeichenfolge text = txt.Text.ToString(); MessageBox.show (Text);

Hoffe, das wird Hilfe für Sie volle

Verwandte Themen