編程工具:VS2005
實現方法:
1、前提,在窗體中添加一個FlowLayoutPanel容器(Name="pnlTest"),用來存放動態添加的PictureBox控件。(注:之所以用FlowLayoutPanel容器,是為了方便圖像控件的自動排列,這樣就不用算每個圖像控件的位置了,嘿嘿~偷個懶)
2、動態生成PictureBox控件的Code塊:
/// <summary> /// 動態添加圖像控件 /// </summary> private void AddPicControl() { PictureBox pic = new PictureBox(); //設置圖像相關屬性及事件 pic.Name = string.Format("pic{0}", this.pnlTest.Controls.Count);//Name屬性 pic.Width = 200; //Size-Width pic.Height = 200; //Size-Height pic.BorderStyle = BorderStyle.FixedSingle;//邊框樣式:單線邊 pic.SizeMode = PictureBoxSizeMode.Zoom;//設置圖像SizeMode=Zoom pic.Cursor = Cursors.Hand;//鼠標懸浮樣式:小手 pic.Click += this.picBox_Click;//事件:單擊控件 pic.DoubleClick += this.picBox_DoubleClick;//事件:雙擊控件 this.AddCheckBoxControlIntoPicBox(pic);//添加復選框 pic.ContextMenuStrip = this.cmsTest;//綁定右鍵菜單 //向容器中添加一個圖像控件 this.pnlTest.Controls.Add(pic); }
3、有時候為了實現這樣的效果:選擇容器內的多張圖像並直觀的顯示已選中的圖像。
之前一直沒有找到合適的顯示方法,曾用過圖像邊框樣式及顏色來區分,但是效果非常不好。
后來在某個朋友的提醒下,突然恍然大悟:我可以將圖像控件作為一個容器,然后在這個容器上添加一個復選框控件。
於是,就開始研究起來,下面附上在圖像控件中添加復選框控件的Code塊:
/// <summary> /// 在圖像控件中添加CheckBox控件 /// </summary> private void AddCheckBoxControlIntoPicBox(PictureBox p_PicBox) { CheckBox chkBox = new CheckBox(); chkBox.Name = string.Format("chkBoxOf{0}", p_PicBox.Name); chkBox.Text = string.Empty; chkBox.AutoSize = true;//若不設置此屬性,會出現比較多的白色邊框,比較難看 chkBox.Location = new System.Drawing.Point(-1, -1);//相對位置:左上角 p_PicBox.Controls.Add(chkBox); }
小弟才疏學淺,難免會有錯誤,若您發現了請及時指出,謝謝!
寫此文只為記錄編程過程中積攢的思想與經驗,若您有更好的思路希望您能給我留言,謝謝啦!~