DEVExpress SplitContainer中问题

贝克汉鸭 中国长城研究院 人工智能所 高级软件架构师  2015-10-27 04:42:38
我要在SplitContainer中Panel1中居中显示一个窗体,代码如下,怎么看代码也没问题,可是为啥运行结果是竖直方向居中,水平方向不是呢。
_waitForm1 = new WaitForm1();
_waitForm1.TopLevel = false;
splitContainerControl2.Panel1.Controls.Add(_waitForm1);
_waitForm1.Left = Convert.ToInt32(splitContainerControl2.Panel1.Width - _waitForm1.Width)/2;
_waitForm1.Top = Convert.ToInt32(splitContainerControl2.Panel1.Height - _waitForm1.Height)/2;
_waitForm1.BringToFront();
_waitForm1.Show();
...全文
126 点赞 收藏 9
写回复
9 条回复
Poopaye 2015年10月28日
能不能截图?谁知道是什么效果
回复 点赞
贝克汉鸭 2015年10月28日
每人理我,自己顶一下
回复 点赞
ajianchina 2015年10月28日
引用 6 楼 beckhans 的回复:
我分析你说的是对的,我在Form_load事件里娶到的是未最大化的容器大小。是不是应该在Form_resize事件中重新取容器的大小?
可以的,form跟panel都是有resize跟resizechanged事件,都可以在这里重置子窗体位置。我前面提到通过拦截消息的方式,那个也可以,都可以,总之都是在窗体尺寸发生变化时调整一下就行了。
回复 点赞
Poopaye 2015年10月28日
引用 6 楼 beckhans 的回复:
我分析你说的是对的,我在Form_load事件里娶到的是未最大化的容器大小。是不是应该在Form_resize事件中重新取容器的大小?
在那个panel的Resize或SizeChanged里调整form的位置
回复 点赞
贝克汉鸭 2015年10月28日
引用 5 楼 duanzi_peng 的回复:
不清楚你的整体布局。 既然是等待窗口 为什么不直接ShowDialog出来。Dev 也就专门的控件表示进度。 https://documentation.devexpress.com/#WindowsForms/clsDevExpressXtraEditorsProgressBarControltopic
研究一下,谢谢啊
回复 点赞
贝克汉鸭 2015年10月28日
引用 4 楼 ajianchina 的回复:
你的问题可能是取的父容器默认尺寸,在容器随窗体大小变化之后,你的位置还是停留在原来的状态,你可通过窗体过程函数WndProc,来拦截最大化、最小化...这些消息,然后重新对子窗体位置进行定位。 你又提到关于窗体相对屏幕居中的问题,不知道是不是表达错误了,下面是窗体相对屏幕工作区居中的代码,你参考一下,注意,是相对屏幕: this.SetBounds((Screen.GetWorkingArea(this).Width - this.Width) / 2, (Screen.GetWorkingArea(this).Height - this.Height) / 2, this.Width, this.Height, BoundsSpecified.Location);
我分析你说的是对的,我在Form_load事件里娶到的是未最大化的容器大小。是不是应该在Form_resize事件中重新取容器的大小?
回复 点赞
exception92 2015年10月28日
不清楚你的整体布局。 既然是等待窗口 为什么不直接ShowDialog出来。Dev 也就专门的控件表示进度。 https://documentation.devexpress.com/#WindowsForms/clsDevExpressXtraEditorsProgressBarControltopic
回复 点赞
ajianchina 2015年10月28日
你的问题可能是取的父容器默认尺寸,在容器随窗体大小变化之后,你的位置还是停留在原来的状态,你可通过窗体过程函数WndProc,来拦截最大化、最小化...这些消息,然后重新对子窗体位置进行定位。 你又提到关于窗体相对屏幕居中的问题,不知道是不是表达错误了,下面是窗体相对屏幕工作区居中的代码,你参考一下,注意,是相对屏幕: this.SetBounds((Screen.GetWorkingArea(this).Width - this.Width) / 2, (Screen.GetWorkingArea(this).Height - this.Height) / 2, this.Width, this.Height, BoundsSpecified.Location);
回复 点赞
贝克汉鸭 2015年10月28日

中间的那个等待中,我想放在屏幕中间
回复 点赞
发动态
发帖子
C#
创建于2007-09-28

8.5w+

社区成员

64.0w+

社区内容

.NET技术 C#
社区公告
暂无公告