當有多個按鈕需要產生時, 如何用loop方式動態產生, 並加入對應的click event
1. 產生一個新的form, 並在該form上面產生MxN組的按鈕
1: public void showForm()2:
3: {
4:
5: Form frm = new Form();6:
7: for (int i = 0; i < m_cols; i++)8:
9: {
10:
11: for (int j = 0; j < m_rows; j++)12:
13: {
14:
15: Button btn = new Button();16:
17: frm.AcceptButton = btn;
18:
19: frm.Controls.Add(btn);
20:
21: btn.Left = m_btnWidth * i;
22:
23: btn.Top = m_btnHeight * j;
24:
25: btn.Width = m_btnWidth;
26:
27: btn.Height = m_btnHeight;
28:
29: btn.Text = (j+1).ToString() + ", " + (i+1).ToString();30:
31: btn.Click += new EventHandler(myClick);32:
33: }
34:
35: }
36:
37: frm.Show();
38:
39: }
其中 myClick定義如下
private void myClick(object sender, EventArgs e)
{
MessageBox.Show(((Button)sender).Text);
}
2. 指派一個panel, 在該panels上面產生MxN組的按鈕
1: public void showOnPanel(Panel panel)
2: {
3: removeAllBtns(panel);
4: for (int i = 0; i < m_cols; i++)
5: {
6: for (int j = 0; j < m_rows; j++)
7: {
8: Button btn = new Button();
9: panel.Controls.Add(btn);
10: btn.Left = m_btnWidth * i;
11: btn.Top = m_btnHeight * j;
12: btn.Width = m_btnWidth;
13: btn.Height = m_btnHeight;
14: btn.Text = (j+1).ToString() + ", " + (i+1).ToString();
15: btn.Click += new EventHandler(myClick);
16: }
17: }
18: }
移除按鈕部分, 一趟並不會將所有panel上的button回傳, 所以加入while迴圈, 真是神奇
1: private static void removeAllBtns(Panel panel)
2: {
3: while (panel.Controls.Count > 0)
4: foreach (Control item in panel.Controls.OfType<Button>())
5: {
6: Button btn = (Button)item;
7: //MessageBox.Show(btn.Text);
8: panel.Controls.Remove(item);
9: }
10: }
產生3x4按鈕在指定的panel元件上
全站熱搜