當有多個按鈕需要產生時, 如何用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元件上
全站熱搜



留言列表
