C# 勇哥工作中的杂记:docking和osgi的杂记

勇哥注:

此为工作中的杂记,也是方便自己查阅。

所以不会费心做基础解释,如果各位感觉有用的部分可以留言和勇哥讨论。



持续记录中。。。。



(四) 为什么这个表格控件已经置为dockstyle.fill了,但是无法填充满容器。

红色区域为无法填充满的位置。


image.png


这个填充不满的区域,在切换窗口时,有可能会出现刷新的问题。

image.png


这个问题确实古怪,它并不是控件属性Margin的问题。

image.png

这个datagridview无论放在什么容器内,都会产生这种问题。

解决办法是绕开这个问题,不使用任何容器,直接放置这个datagridview。

而且这个问题只是在当前布局中出现。

在其它的布局中,从来没出现过这种问题。即使datagridview放置容器内也没问题。



(三)怎么把指定的docking窗口置为活动状态?

如下:

        private bool UIPanelSwitchDisplay(DockFormNameEnum formObj)
        {
            var s1 = BundleRuntime.Instance.GetService<DockContent>();
            var win = s1.Find(s => s.Text == formObj.ToString());
            if (win == null) return false;

           

            if (win.DockHandler.IsHidden)
            {
                //win.DockHandler.Show(LayoutDockPanel, DockState.DockRight);
                win.DockHandler.Activate();
            }
            else
            {
                win.DockHandler.Activate();
            }
            return true;
        }



(二)怎么代码控制docking窗口的宽度?

人工是可以调动窗口的切分线调整各个窗口的左右、上下的大小。


测试的时候,发现对于左右、左中右这种布局的窗口,属性DockLeftPortion ,DockRightPortion 可以达到目的。

但是对于上下方式的布局,属性DockBottomPortion,DockTopPortion完全没有效果。

实在不知道这两个属性是怎么使用的。有知道的朋友不吝赐教!

 

        private bool UIPanelSetWidthHeight(DockFormNameEnum formObj)
        {
            var s1 = BundleRuntime.Instance.GetService<DockContent>();
            var win = s1.Find(s => s.Text == formObj.ToString());
            if (win == null) return false;

            //win.DockPanel.DockBottomPortion = 1000;
            //win.DockPanel.DockTopPortion = 500;
            win.DockPanel.DockLeftPortion = 600;
            win.DockPanel.DockRightPortion = 700;
            //win.DockPanel.DockTopPortion = 100;
            
            
            //win.DockPanel.ActivePane.DockPanel.DockTopPortion = 100;
            // win.DockPanel.DockWindows[2].VisibleNestedPanes[0].DockPanel.DockLeftPortion = 800;
            //win.DockPanel.DockBottomPortion.DockPanel.DockBottomPortion = 50;
            var s3=win.DockPanel.DockWindows;

            return true;
        }


也可以参考:

http://47.98.154.65/?id=1989




(一)下面的代码的几个知识点:


  1.  怎么把docking的可拖拽窗口加入一个控件?

    docking的窗口如果已经停靠并显示在主dockPanel上,如果这时候把这添到一个控件内,则原docking窗口显示内容会变成空白。其内容跑到控件内。如果这时候你切换其它的docking窗口,会发现添加到控件内的内容也没有了。

    为了即可以把它添加到控件内显示,又不会影响切换其它docking窗口,你可以设置初始状态此docking窗口不显示。


    2. “无法把顶级控件加入控件”,这个错误只需要设置窗口的TopLevel=false


var win2 = BundleRuntime.Instance.GetService<DockContent>();
var win = win2.Find(s => s.Text == DockFormNameEnum.模块设置.ToString());

win.TopLevel = false;
this.tableLayoutPanel3.Controls.Clear();
this.tableLayoutPanel3.Controls.Add(win);
win.Dock = DockStyle.Fill;
win.WindowState = FormWindowState.Maximized;
win.Show();





--------------------- 

作者:hackpig

来源:www.skcircle.com

版权声明:本文为博主原创文章,转载请附上博文链接!



本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2025年4月    »
123456
78910111213
14151617181920
21222324252627
282930
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864