2017-10-21 95 views
1

的一部分,我用這個代碼用兩行文字創建按鈕選擇按鈕的文本

private void button1_Click(object sender, EventArgs e) 
{ 
    int top = 50; 
    int left = 100; 
    int n = 0; 
    int s = 99; 
    for (int i = 0; i < 20; i++) 
    { 
     Button button = new Button(); 
     button.Left = left; 
     button.Top = top; 
     panel1.Controls.Add(button); // here 
     button.Size = new Size(50, 50); 
     if (i == 4 || i == 9||i==14||i==19) 
     { 
      top = 30; 
      left = 23; 
      top +=button.Top+2; 
      left += button.Width+2; 
     } 
     else 
      left += button.Width + 2; 

     n = n + 1; 
     s = s + 1; 

     button.Text = Convert.ToString(n) + Environment.NewLine + Convert.ToString(s); 
     button.Click += Button_Click; 
    }  
} 
private void Button_Click(object sender, EventArgs e) 
{ 
    string s; 
    Button button = (Button)sender; 
    s = button.Text + Environment.NewLine; 
    MessageBox.Show(s); 
} 

所以我需要只選擇第二行西布朗我的按鈕上的文字,當我點擊動態按鈕。我將如何做到這一點?

回答

0

可以存儲一些數據Tag屬性:

button.Text = Convert.ToString(n) + Environment.NewLine + Convert.ToString(s); 
button.Tag = new int[] { n, s }; 

後來retrive它與用途:

private void Button_Click(object sender, EventArgs e) 
{ 
    Button button = (Button)sender; 
    var data = button.Tag as int[]; 
    string s = data[1].ToString(); 
    MessageBox.Show(s); 
} 
0
private void Button_Click(object sender, EventArgs e) 
{ 
    string s; 
    Button button = (Button)sender; 
    s = button.Text + Environment.NewLine; 
    MessageBox.Show(button.Text.Split(new[] { Environment.NewLine }, StringSplitOptions.None)[1]); 
}