2010-11-18 4 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

귀하의 이벤트 핸들러는 매개 변수로 보낸라는 개체가 있습니다. TextBox로 캐스팅해야만 텍스트 상자의 텍스트를 가져올 수 있습니다.

2

귀하의 이벤트 핸들러는 서명이 :

보낸 사람이 클릭 된 텍스트 상자에 대한 참조입니다
void Handler(object sender, EventArgs args) 

. 이 시점에서 i * j를 알아야 할 필요가 있다면 TextBox에서 파생 된 클래스를 만들었습니다.이 클래스에는 그 숫자가 저장되어 있습니다.

2

당신이 할 수있는 다음 코드

텍스트 상자의 TXT = (텍스트 상자) 보낸 사람을 writting하여 텍스트 상자 값을 얻을; string text = txt.Text.ToString(); MessageBox.show (text);

희망이 있으면 도움이 될 것입니다.

관련 문제