Winform模拟Visual Studio工具栏拖拉拽、停靠

本文介绍了如何在WindowsForms应用程序中使用DockPanel控件库提升软件界面设计,包括安装第三方控件,创建窗体,设置窗体属性,以及如何通过编程实现窗体的停靠功能。文章强调了项目需求的提升和自我技能更新的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

随着公司接的业务复杂度提高,软件界面设计需求也相应提升,老板不再满足于单面板的各种跳转,所以明白了吧,不提升自己就等于自愿失业或转行!!!

方案

本来想着自学自写一套控件库来实现,但是时间有点紧,只能先做完项目偷偷抽时间写,现在主要使用现成的大佬写好的控件。由于需求还算简单,只是六七个页面揉合到一个主窗体,所有采用目前大多博客推荐的DockPanel

1、新建一个.Net Framework 4.7.2 窗体应用项目,我这里使用默认命名

2、右键单击引用,选择NuGet,下载安装 WeiFenLuo.WinFormsUI.Docking这个控件库

成功安装后你可以在工具箱找到DockPanel这个第三方控件

 

3、拖一个DockPanel进Form1中,并将其Dock改为Fill

 

 

4、新建另一个窗体类命名为Form2 

 

5、打开Form2代码,让其改为继承WeifenLuo.WinFormsUI.Docking.DockContent

6、打开Form1代码,修改代码如下,实现给dockpanel添加5个其他窗口

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            //最大化主窗口
            WindowState = FormWindowState.Maximized;
            IsMdiContainer = true;
            //添加窗体加载事件处理函数
            Load += Form1_Load;
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Form2 fLeft = new Form2();
            fLeft.Text = "left";
            fLeft.Show(dockPanel1);
            fLeft.DockTo(dockPanel1, DockStyle.Left);

            Form2 fRight = new Form2();
            fRight.Text = "right";
            fRight.Show(dockPanel1);
            fRight.DockTo(dockPanel1, DockStyle.Right);

            Form2 fTop = new Form2();
            fTop.Text = "up";
            fTop.Show(dockPanel1);
            fTop.DockTo(dockPanel1, DockStyle.Top);

            Form2 fBottom = new Form2();
            fBottom.Text = "bottom";
            fBottom.Show(dockPanel1);
            fBottom.DockTo(dockPanel1, DockStyle.Bottom);

            Form2 fFill = new Form2();
            fFill.Text = "fill";
            fFill.Show(dockPanel1);
            fFill.DockTo(dockPanel1, DockStyle.Fill);
        }
    }
}

 7、运行程序

拖拽窗体fill,可以停靠到其他区域,这些都是DockPanel这个库内部实现的,无需我们自己关心 

 

8、注意事项

DockPanel库使用有几个需要注意的地方

【1】项目记得选择.net framework框架

【2】主窗体必须设置IsMdiContainer=true,表示启用多文档容器

【3】DockPanel的子窗体必须继承 WeifenLuo.WinFormsUI.Docking.DockContent ,这样你在对其进行拖拉拽的时候才会响应停靠、移动、拉伸功能

结语

先苟住,再找时间充实、强化自身

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值