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

这篇具有很好参考价值的文章主要介绍了Winform模拟Visual Studio工具栏拖拉拽、停靠。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景

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

方案

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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、运行程序

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

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

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

8、注意事项

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

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

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

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

结语

先苟住,再找时间充实、强化自身文章来源地址https://www.toymoban.com/news/detail-496872.html

到了这里,关于Winform模拟Visual Studio工具栏拖拉拽、停靠的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Qt之菜单栏、工具栏、状态栏介绍及工具栏QAction的动态增删显示实现方式

    目的 端应用程序或者编辑器基本都支持工具栏快捷功能的动态增删,即通过在菜单栏上打钩就可以在工具栏上看到相应功能的快捷按钮,取消打钩则在工具栏上就移除了该功能的快捷按钮。那么Qt如何实现这个功能,本篇目的就是记录实现此功能的方法及思路。 效果 先看下

    2024年02月08日
    浏览(52)
  • Android工具栏ToolBar

    主流APP除了底部有一排标签栏外,通常顶部还有一排导航栏。在Android5.0之前,这个顶部导航栏以ActionBar控件的形式出现,但AcionBar存在不灵活、难以扩展等毛病,所以Android5.0之后推出了 ToolBar工具栏 控件,意在取代AcionBar。 但为了兼容之前的版本,ActionBar按件仍然保留。 T

    2024年02月05日
    浏览(51)
  • 16.Qt 工具栏生成

    目录 前言: 技能: 内容: 1. 界面添加 2. 信号槽  功能实现 参考: 前言: 基于QMainWindow ,生成菜单下面的工具栏,可以当作菜单功能的快捷键,也可以完成新的功能 直接在UI文件中生成 技能: 创建工具栏 内容: 基于QMainWindow!!!创建时基类选择QMainWindow 1. 界面添加 菜

    2024年02月19日
    浏览(50)
  • wangEditor系列之工具栏配置

    mode为default mode为simple 下方分别介绍对面得四个属性 结果如下 分组可以给key设置 | 斜体就不在工具栏展现了 如果你感觉文章不咋地 //(ㄒoㄒ)// ,就在评论处留言,作者继续改进; o_O??? 如果你觉得该文章有一点点用处,可以给作者点个赞; \\\\*^o^*// 如果你想要和作者一起进步

    2024年02月09日
    浏览(51)
  • idea上方工具栏调整位置

    一,点进去idea发现在上方的工具栏那里所有的工具都消失了,如下图所示,Tomcat服务器,包括安装的一些插件都不显示了 二,解决办法:可能是由于自己不小心点到了某个按钮,按照下图操作再把它设置一下就行了,点view–appearance–Navigation bar 三,点Toolbar会把工具栏位置

    2024年02月15日
    浏览(54)
  • Qt菜单栏,工具栏,状态栏

    ui界面增加不了控件,只能代码增加; ui-statusbar-setSizeGripEnabled(false);   void QStatusBar::addWidget(QWidget *widget, int stretch = 0) stretch参数用于随着状态栏的增长和收缩为给定的小部件计算合适的大小。默认的拉伸因子为0,即给小部件一个最小的空间。     

    2024年02月15日
    浏览(56)
  • 【工具栏】jclasslib 插件的安装和使用

    安装之后 在 view 的 ToolWindows 里也有一个这样的窗口 jclasslib 的主要作用是查看字节码的相关信息  例如我写了一段这样的代码,然后去查看他的字节码 编译完之后 因为内容写在了主函数里 所以查看   iconst_1 加载数字1到操作数栈。 invokestatic #2 java/lang/Integer.valueOf : (I)Ljava/

    2024年01月23日
    浏览(45)
  • Qt添加菜单栏和工具栏

    一般常规的PC软件都会有主窗口,主窗口中都会有菜单栏和工具栏,例如我们正在使用的Qt creator: 首先需要先创建mainWindow设计师类,基类直接选择默认的MainWindow即可,然后就可以进行设计了,这里选择直接设计ui文件,下拉菜单无法直接输入中文,需要在其它地方输入中文

    2024年02月11日
    浏览(60)
  • idea没有maven工具栏解决方法

    我总结了四种方法(不一定都能成功,但总会有一种成功的) 1、如果是新创建的maven工程,右键点击项目的 pom.xml 文件,如果有 “Add as Maven Project” 选项,点击该选项,应该就会有maven; 2、idea界面最左下角的那个小框,maven在里面应该能找到,么有的话用第三种方法; 3、

    2024年02月16日
    浏览(44)
  • Antd G6实现自定义工具栏

           在使用g6实现知识图谱可视化中,产品经理提出了有关图谱操作的不少功能,需要放置在工具栏中,其中有些功能不在g6自带的功能里,且工具栏样式、交互效果也和官方自定义工具栏不同。那我们怎么去实现呢?         g6官方的工具栏案例是这样:G6,提供了“重

    2024年01月25日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包