找回密码
 立即注册

QQ登录

只需一步,快速开始

zhuxialiang

论坛元老

25

主题

75

帖子

1万

积分

论坛元老

积分
12575

活字格认证

zhuxialiang
论坛元老   /  发表于:2013-6-4 13:04  /   查看:6262  /  回复:3
我使用如下方法获取DockTabControl区域大小,但返回结果老是200,200
        private void C1LeftDock_SizeChanged(object sender, SizeChangedEventArgs e)
        {
            Double t_LeftDockWidth;
            Double t_LeftDockHeight;
            t_LeftDockWidth = (Double)C1LeftDock.GetValue(C1DockTabControl.DockWidthProperty);
            t_LeftDockHeight = (Double)C1LeftDock.GetValue(C1DockTabControl.DockHeightProperty);
            MessageBox.Show(t_LeftDockWidth.ToString());
            MessageBox.Show(t_LeftDockHeight.ToString());
        }




请问问题出在哪里?有没有其他解决办法?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

3 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-6-4 16:55:00
沙发
zhuxialiang 你好

我使用附件中的程序进行测试,当修改Dock大小时,获取的值也会有相应的改变:




如果我们代码上有区别,你可以直接修改附件中的代码,如何发给我调试。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
zhuxialiang
论坛元老   /  发表于:2013-6-4 21:40:00
板凳

您的方法没有效果

回复 2楼dof的帖子




按您上述方法,我试了一下没有效果,在你的示例里好像是有效果的。问题现象重现方法:使用本贴的附件,运行后点“系统视图”-->拖动DockTabControl边框,高度始终为200。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-6-5 09:22:00
地板
回复 3楼zhuxialiang的帖子

Hi zhuxialiang

看到你昨晚10的跟帖,辛苦了。

你的代码仅需简单修改 C1DockTabControl_SizeChanged 和 button1_Click 方法,就可以取到正确的高度和宽度,修改之后的代码如下:

  1.     private void C1DockTabControl_SizeChanged(object sender, SizeChangedEventArgs e)
  2.     {
  3.         if ((sender as C1.WPF.Docking.C1DockTabControl).Name == "C1LeftDock")
  4.         {
  5.             Double t_LeftDockWidth;
  6.             Double t_LeftDockHeight;
  7.             t_LeftDockWidth = C1LeftDock.ActualWidth;
  8.             t_LeftDockHeight = C1LeftDock.ActualHeight;
  9.             MessageBox.Show(t_LeftDockWidth.ToString());
  10.             MessageBox.Show(t_LeftDockHeight.ToString());
  11.         }
  12.     }

  13.     private void button1_Click(object sender, RoutedEventArgs e)
  14.     {
  15.         Double t_LeftDockWidth;
  16.         Double t_LeftDockHeight;
  17.         t_LeftDockWidth = (Double)C1LeftDock.ActualWidth;
  18.         t_LeftDockHeight = (Double)C1LeftDock.ActualHeight;
  19.         MessageBox.Show(t_LeftDockWidth.ToString());
  20.         MessageBox.Show(t_LeftDockHeight.ToString());

  21.     }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部