2011-06-13 52 views
2

我想要獲取按鈕的文本,只要我點擊它。事件和按鈕

,我提出的算法是在那裏我有一個功能,就是創建許多按鈕和分配數的循環:

void ListAllPage() 
    { 
     if (pageMax < 50) 
     { 
      //if page max less than 50 
      for (int i = 0; i < pageMax; i++) 
      { 
       Button newBtn = new Button(); 
       newBtn.Text = i.ToString(); 
       newBtn.Width = 50; 

       newBtn.Click += page_Clicked; 

       pageCell.Controls.Add(newBtn); 
      } 
     } 
} 

現在按鈕會出現在屏幕上,他們的活動將被觸發,函數page_Click;將被執行:

public void page_Clicked(object sender, EventArgs e) 
    { 

    //inside this function I want to obtain the button number that was clicked by the user. How do I do that? 
    } 

拿筆記,我必須說我在這裏所描述的所有功能,...

我的想法是養活我的迴路的字典中創建的所有按鈕.. 字典..它將需要像這樣的變量btndic.Add(按鈕b =新的按鈕,b.text);

但問題是如何檢索按鈕,,,

如果有更好的辦法,我想聽聽它...

回答

2

你只需要轉換sender對象一個Button,或者更一般地說,Control

public void page_Clicked(object sender, EventArgs e) 
{ 
    Control c = sender as Control; 
    MessageBox.Show("Clicked on " + c.Text); 
} 

此外,它可能更適合使用Tag屬性來存儲您的自定義的信息(號碼)。在這種情況下,Text屬性可以是任何你喜歡的。

2

嘗試這種方式

public void page_Clicked(object sender, EventArgs e) 
{ 

    Button btn=(Button)sender; 
} 
1

ListAllPage方法分配Tag每個按鈕:

newBtn.Tag = i; 

在你的處理器,你可以從sender獲得按鈕實例:

var clickedButton = (Button)sender; 
int pageIndex = (int)clickedButton.Tag; 
+0

哇..非常感謝你,我並不知道標記語法 – Matrix001 2011-06-13 10:18:51

+0

標記 – Matrix001 2011-06-13 10:45:04

+0

'標記'的命名空間是什麼沒有命名空間。它是Control的屬性:http://msdn.microsoft.com/en-us/library/system.windows.forms.control.tag.aspx – Snowbear 2011-06-13 15:47:22