c# WInform 自定義導航布局


問題形成原因:軟件一般都是左側樹導航或上部菜單導航,做好一個軟件后,有的客戶可能想用一個頁面做導航圖像,而各個客戶用的功能可能不同,所以導航布局需要自定義。

思路:1.把菜單列出來

           2.雙擊菜單生成一個按鈕 這個按鈕可以拖動

           3.保存按鈕的 top left 值,下次就可以直接讀了

實現:這里只寫了生成和拖動功能(效果如下圖)

左側treeview 雙擊 生成button 到右側panel 且可拖動

private void tv_DoubleClick(object sender, EventArgs e)
        {
            TreeNode tnd = tv.SelectedNode;

            if (tnd == null)
                return;
            //遍歷panel控件 已存在的就不生成了 代碼。。。略
            Button btn = new Button();
            btn.Text = tnd.Text;
            btn.Tag = tnd.Tag;
            btn.Width = 100;
            btn.Height = 100;
            btn.Image = Resources.aa;
                     
            btn.MouseMove += Btn_MouseMove;
            btn.MouseDown += Btn_MouseDown;

            panel1.Controls.Add(btn);

        }

        Point myPoint;
        private void Btn_MouseDown(object sender, MouseEventArgs e)
        {
            myPoint = e.Location;
        }
        private void Btn_MouseMove(object sender, MouseEventArgs e)
        {
            Button button;
            button = (Button)sender;
            button.BringToFront();
            ((Control)button).Cursor = Cursors.Arrow;//設置拖動時鼠標箭頭
            if (e.Button == MouseButtons.Left)
            {
                Point mousePos = Control.MousePosition;
                mousePos.Offset(-myPoint.X, -myPoint.Y);//設置偏移
                ((Control)button).Location = ((Control)button).Parent.PointToClient(mousePos);
            }
        }
View Code

完成上邊的 我們就可以做個保存按鈕 把位置保存上了

 


免責聲明!

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



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