读书人

winform中控件层叠有关问题

发布时间: 2013-10-17 17:26:17 作者: rapoo

winform中控件层叠问题
WPF中可以直接设置控件的层叠顺序,winform中怎么设置啊。 就是3个控件放在窗体同一个位置,直接通过动态改变3个控件的某个属性来控制3个控件哪个在最高层,哪个在第二第三层。是哪个属性啊? 不会是只能用 BringToFront和SendToBack吧,WPF那样多简单啊 winform 控件 层叠
[解决办法]

引用:
Quote: 引用:

this.Controls.SetChildIndex


我试了你这个怎么不行
能举个例子么,3个按钮控件,在按钮4的click事件里面改变他们的顺序,怎么写?

BringToFront的源码

public void BringToFront()
{
if (this.parent != null)
{
this.parent.Controls.SetChildIndex(this, 0);
}
else if ((this.IsHandleCreated && this.GetTopLevel()) && SafeNativeMethods.IsWindowEnabled(new HandleRef(this.window, this.Handle)))
{
SafeNativeMethods.SetWindowPos(new HandleRef(this.window, this.Handle), NativeMethods.HWND_TOP, 0, 0, 0, 0, 3);
}
}

其实最终都是调用SetWindowPos这个windows api。

做winform最重要的就是理解清楚windows消息循环和windows窗体构成。这些懂了,就不会有很多乱七八糟,奇奇怪怪的问题。
最好是读一遍《windows程序设计》

读书人网 >C#

热点推荐