日期:2014-05-17  浏览次数:20804 次

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程序设计》