zoukankan      html  css  js  c++  java
  • weifenluo.winformsui.docking 详解

    基础布局网上有的是,不再赘述,在此仅描写一些犄角噶蓝儿,不容易查到,但会遇到的问题:

    1,假设共3个区域,想让布局显示方式为左侧一个区域,右侧呈上下区域。通过dockpanel.show(参数)逐一show出来,结果却发现可能布局与自己想象的不一致。

    结果布局可能为上一个区域,左右两个区域的这种布局,

    图:

    ,

    解决方案:改变代码show的顺序即可。图:

    2,点击首页按钮,自动在document区域新增首页。本人的能力有限,这个问题也困惑了我一阵,因为dockpanel的tab页其实是个窗体,如果用Form1 frm1 = new Form1()的方式,的确可是实现,但是,大家也看到了,首页这个问题到好办,可是左侧那么多栏目,点一下,就new一个新窗体,那么需要在项目中建多少个窗体才能解决问题呀。显然,这不现实。

    解决方案:很简单,直接new即可,具体看图:

    3,以左侧区域为例,点击区域内的×号,窗体没了,但是通常设计会在菜单栏加个显示按钮,以便用户想要再看的时候,不用再重新启动程序,那么怎么解决呢?第一步,设置isHidden而不是hide(),第二歩,将左侧窗体的属性HideOnClose设置为true(默认为false),这两步缺一不可。图:

    4,点击左侧树栏目,通过栏目id查询右侧datagridview

    此问题需要解决的难点,主要是:(1),这不像winform的资源管理器制作,这是两个窗体间的传值,但由于加上了dockpanel插件,传值的方法又和传动的winform不太一样;(2),dockpanel插件只有一个,区域是自己分配的,在dpLeft窗体上的treeview的click事件传参无效,也就是只能用主窗体对象传参,但是单击事件需要在主窗体弄;(3,),不能通过问题2的解决方案new,否则会出现新的tab窗体,然而右侧区域那两个tab数量是固定的,不能新增窗体。

    好吧,无需多言,直接上图:

    6,关闭所有document区域的文档功能。

    前面已经提到,不可能新增一个tab,就去新增一个form,这些tab全都是一个对象new出来的,即dpContent对象new出来的,那么这时如果关闭,用dpContent..IsHidden=true的话,只会关闭一个tab,并且这样关闭后,如果再新增tab,会报异常的。

    解决方案:循环documents即可,具体代码见图:

    7,点击‘×’关闭tab页,报异常

    解决方案:见图和注释

    本人平时主要以web为主,这次是第一次接触winform,外加个dockpanel插件,或许可能有一些问题winform本身就可以解决,希望我这点小玩儿闹能对大家有所帮助,谢谢。

     源码地址:https://github.com/dockpanelsuite/dockpanelsuite的dockPanel文件夹下

    dll下载及exe的demo:https://files.cnblogs.com/files/chzbgb/DockPanel_2.4_Bin.zip

  • 相关阅读:
    结构体数组
    怎样在Linux下通过ldapsearch查询活动文件夹的内容
    Phalcon之 表单(Forms)
    Java模式(适配器模式)
    人类智商一般在多少左右?爱因斯坦的智商是多少?
    SQL中declare申明变量
    apache2.2 虚拟主机配置
    项目实施阶段该做好哪些方面的工作
    HTML精确定位:scrollLeft,scrollWidth,clientWidth,offsetWidth之全然具体解释
    ExtJs自学教程(1):一切从API開始
  • 原文地址:https://www.cnblogs.com/chzbgb/p/kamino.html
Copyright © 2011-2022 走看看