之前前輩傳入panel的 handler 可以顯示,但是滑鼠鍵盤事件會失效
因此陰錯陽差學會把 myForm 塞到 form/panel 裡面的方法
流程大致上是
- 將母form的IsMdiParent打開
- 將子form的MdiParent設定為母form
- 用母form中的ui元件(ex:panel)限制子form的活動範圍(panel.Controls.Add(子form))
private void Form2_Load(object sender, EventArgs e)
{
// parent 必須是 mdi container
this.IsMdiContainer = true;
myForm _myForm = new myForm(){
MdiParent = this, //將myForm設定為目前form的子物件
FormBorderStyle = FormBorderStyle.None, //關閉myForm外框
Dock = DockStyle.Fill //將myForm填滿所在視窗(panel)
}; // 實體化myForm,在new的同時設定屬性,也可以之後再指定屬性
//例如
_myForm.Dock = DockStyle.Fill;
//事後再更改屬性也是ok
_myForm.Show(); //顯示myForm
this.panel1.Controls.Add(_myForm); // 將myForm放入panel1中,需先確認this.IsMdiContainer 是true
}
code end或是也可以把user control放入panel
myUserControl _myUserControl = new myUserControl(){Dock = DockStyle.Fill // 使user control 填滿panel}; //實體化myUserControl
this.panel1.Controls.Add(_myUserControl); // 將user control 放入panel1
終於知道別人在一個專案中分成很多form開發再組再一起的方法了orz(很基本的fu~)ps:小小的悲劇是,vs似乎無法把x64的user control加入tool box, 無奈,我的專案有用到x64的library,無法編譯成x86,只能手動加入user control了
沒有留言:
張貼留言