2010-11-18 3 views
3

人は、テキストボックスの8x8グリッド内のテキストボックスをクリックすると、クリックしたテキストボックスのテキストが何かに変更されます。私のグリッドはtextboxes[,]という変数に設定されているので、textboxes[0,0]と入力するとグリッドの最初のボックスが表示されます。現在、私の非常に限られた知識で、私はこれを持っています。複数のテキストボックスのイベントをクリック

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

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

      } 
     } 

次に、いずれかのボックスをクリックすると処理できます。あなたがこれを行うより良い方法を持っているなら、私はそれを聞くのが大好きです。私はちょうどクリックされたボックス、主にテキストにアクセスする方法を知らない。私は十分にこれを説明してくれることを願っています。すべての助けをありがとう!

-Lewis

答えて

5

あなたのアプローチが良いです。

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

見た目変更されたコードのあなたの作品:

私たちは、テキストボックスの位置を格納するためのクラスを定義できます。次のようにのみ、イベントでそれを処理するためにいくつかの追加情報を定義する必要があります

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 }; 
    } 

そして、あなたのハンドラ:

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; 
     } 
    } 

エディt:コードを少し変更しました。レビューしてください。

3

EventHandlerには、パラメータとしてsenderというオブジェクトがあります。あなたはそれをTextBoxにキャストしなければなりません、そして、テキストボックスのテキストを得ることができます。

2

あなたのイベントハンドラは、シグネチャがあります。

送信者がクリックされたテキストボックスへの参照です
void Handler(object sender, EventArgs args) 

。この時点でi * jも知る必要がある場合は、TextBoxから派生したクラスを作成し、その中にそれらの数値が格納されていることを確認してください。

2

次のコード

のTextBox TXT =(テキストボックス)送信者を足すことで、テキストボックスの値を取得することができます。 文字列text = txt.Text.ToString(); MessageBox.show(text);

希望があれば、これは完全に助けになるでしょう

関連する問題