FlowLayoutPanel flowLayoutPanel1 = new FlowLayoutPanel();
for (int i = 0; i < 9; i++)
{
Button btn = new Button();
btn.Height = 100;
btn.Width = 100;
btn.Cursor = Cursors.Hand;
btn.Name = btn.Text = "button" + (i + 1);
flowLayoutPanel1.Dock = DockStyle.Left;
flowLayoutPanel1.Width = 330;
flowLayoutPanel1.Controls.Add(btn);
}
this.Controls.Add(flowLayoutPanel1); this
FlowLayoutPanel flowLayoutPanel1 = new FlowLayoutPanel();//爲何要添加這樣一個控件?
FlowLayoutPanel是一個用於自動排列控件的panel,它會自動的排列在它裏面的控件,默認是從左到右,從上到下,用這個控件,就是爲了方便不用本身寫代碼控制button的位置
flowLayoutPanel1.Dock = DockStyle.Left;//這個又是什麼意思啊?
這句是讓FlowLayoutPanel控件停靠在主窗體上,停靠的方式並非佔滿整個主窗體,而是靠左,也就是左邊固定在窗體的最左邊,右邊的大小本身控制,爲何不全屏停靠是由於,這個控件沒法讓在它裏面的控件自動換行,若是窗體很大,那一排就會自動放上多於3個button,因此須要手動設置FlowLayoutPanel的寬度,讓它一排只能裝下3個button,第4個就自動換到下一行了
this.Controls.Add(flowLayoutPanel1);//爲何要使用這個添加?
這句是將FlowLayoutPanel控件放到窗體中,動態建立的FlowLayoutPanel控件一開始並無放到窗體中
就像動態建立的button,一開始並無放到FlowLayoutPanel控件中同樣,須要flowLayoutPanel1.Controls.Add(btn)把button放到FlowLayoutPanel中同樣
事件的方法很簡單,但事件有不少種,每一種的代碼稍有點區別,你能夠使用一個簡便的方法,就是你先用靜態的方式,就是弄一個button在設計器上,在事件窗口中雙擊建立一個事件,而後去Designer中找到自動添加的這行代碼,而後複製到程序中,而後把界面還原回來。
如button的點擊事件
this.button1.Click += new System.EventHandler(this.button1_Click);
// 控件名(也就是控件的Name,不是Text).Click += new System.EventHandler(響應事件的方法名)
而後就是建立響應方法,方法名要與註冊事件時寫的方法名同樣
private void button1_Click(object sender, EventArgs e)
{
}
取消事件,跟註冊事件同樣,只是把+=換成-=
this.button1.Click -= new System.EventHandler(this.button1_Click);
程序執行過這一行代碼後,就不會再響應點擊事件了
像上面的動態的添加9個button的例子,你須要在for裏面添加代碼,不過要寫在btn.Name = btn.Text = "button" + (i + 1);後面,由於要先賦了控件名之後,再添加事件
btn.Name.Click += new System.EventHandler(this.button1_Click);
這樣9個button的點擊都會進入到private void button1_Click(object sender, EventArgs e)這個方法 設計