勇哥注:
此为工作中的杂记,也是方便自己查阅。
所以不会费心做基础解释,如果各位感觉有用的部分可以留言和勇哥讨论。
持续记录中。。。。
(四) 为什么这个表格控件已经置为dockstyle.fill了,但是无法填充满容器。
红色区域为无法填充满的位置。
这个填充不满的区域,在切换窗口时,有可能会出现刷新的问题。
这个问题确实古怪,它并不是控件属性Margin的问题。
这个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; }
也可以参考:
(一)下面的代码的几个知识点:
怎么把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
版权声明:本文为博主原创文章,转载请附上博文链接!

