MDI窗體容器 - 放窗體的容器數據庫
窗體是頂級控件,是不容許放到其餘的控件或窗體中的 (李獻策lxc)this
窗體屬性中有一個屬性:IsMdiContainer - 肯定該窗體是不是MDI容器spa
在窗體中放一個頂部菜單3d
點擊<銷售>按鈕會在窗體中彈出一個新的窗體code
//銷售 private void 銷售ToolStripMenuItem_Click(object sender, EventArgs e) { Form5 f5 = new Form5(); f5.MdiParent = this; f5.Show(); }
內部窗體能夠在父級窗體裏任意移動orm
問題一:打開新的窗體全屏(李獻策lxc)blog
//銷售 private void 銷售ToolStripMenuItem_Click(object sender, EventArgs e) { Form5 f5 = new Form5(); //窗體最大化 f5.WindowState = FormWindowState.Maximized; f5.MdiParent = this; f5.Show(); }
問題二:打開後有最小化、最大化等按鈕事件
錯誤方法一:去掉最大化最小化按鈕——失敗ip
//銷售 private void 銷售ToolStripMenuItem_Click(object sender, EventArgs e) { Form5 f5 = new Form5(); //窗體最大化 f5.WindowState = FormWindowState.Maximized; //去掉最大化最小化按鈕 f5.MaximizeBox = false; f5.MinimizeBox = false; f5.MdiParent = this; f5.Show(); }
錯誤方法二:去掉邊框——失敗(李獻策lxc)class
//銷售 private void 銷售ToolStripMenuItem_Click(object sender, EventArgs e) { Form5 f5 = new Form5(); //窗體最大化 f5.WindowState = FormWindowState.Maximized; //去掉邊框 f5.FormBorderStyle = FormBorderStyle.None; f5.MdiParent = this; f5.Show(); }
正確方法:先用一個panel填充窗體剩餘部分,在panel中打開新窗體
//銷售 private void 銷售ToolStripMenuItem_Click(object sender, EventArgs e) { Form5 f5 = new Form5(); //窗體最大化 f5.WindowState = FormWindowState.Maximized; //去掉邊框 f5.FormBorderStyle = FormBorderStyle.None; f5.MdiParent = this; //設置新窗體的Parent f5.Parent = panel1; f5.Show(); }
問題三:在即將打開的新窗體中放入一個button1,Anchor設置爲Bottom,Right,當打開新窗體並拖動窗體邊框時,按鈕並未鎖定與底部和右側的距離
panel是跟隨窗體的變化而變化,可是新窗體是不隨panel變化而變化的
解決方法:設置主窗體的size發生改變時新窗體同時改變size(李獻策lxc)
//Size改變時的事件 private void Form3_SizeChanged(object sender, EventArgs e) { //遍歷panel中的控件, foreach (var v in panel1.Controls) { //若是是新窗體 if (v is Form5) { //新窗體先變爲正常大小 (v as Form5).WindowState = FormWindowState.Normal; //新窗體再變爲最大化以適應新的Size (v as Form5).WindowState = FormWindowState.Maximized; } } }
問題四:在點擊<倉庫>按鈕時,會在主窗體中打開一個新的窗體,再點擊<銷售>按鈕會切回銷售窗體,但實際是又建立了一個新的銷售窗體而已,並不是原來打開的窗體
解決辦法:惟一窗體(李獻策lxc)
==========================================================
權限設置 - 不一樣的權限登入時顯示內容不一樣
新建一個登入窗體
數據庫中添加一個新的權限表