Winfrom動態創建控件


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);  

 

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)這個方法 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM