1. 程式人生 > >C#-WinForm-MDI窗體容器、權限設置

C#-WinForm-MDI窗體容器、權限設置

=== one form hang tools 邊框 最大化 不同的 www.

MDI窗體容器 - 放窗體的容器

窗體是頂級控件,是不允許放到其他的控件或窗體中的 (李獻策lxc)

窗體屬性中有一個屬性:IsMdiContainer - 確定該窗體是否是MDI容器

技術分享圖片

在窗體中放一個頂部菜單

技術分享圖片

點擊<銷售>按鈕會在窗體中彈出一個新的窗體

技術分享圖片
//銷售
        private void 銷售ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form5 f5 = new Form5();
            f5.MdiParent 
= this; f5.Show(); }
技術分享圖片

技術分享圖片

內部窗體可以在父級窗體裏任意移動

問題一:打開新的窗體全屏(李獻策lxc)

技術分享圖片
//銷售
        private void 銷售ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form5 f5 = new Form5();
            //窗體最大化
            f5.WindowState = FormWindowState.Maximized;

            f5.MdiParent 
= this; f5.Show(); }
技術分享圖片

技術分享圖片

問題二:打開後有最小化、最大化等按鈕

錯誤方法一:去掉最大化最小化按鈕——失敗

技術分享圖片
//銷售
        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)

技術分享圖片
//銷售
        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)

==========================================================

權限設置 - 不同的權限登入時顯示內容不同

新建一個登入窗體

數據庫中添加一個新的權限表

技術分享圖片

技術分享圖片

出處:https://www.cnblogs.com/qq450867541/p/6185377.html

C#-WinForm-MDI窗體容器、權限設置