当前位置:编程学习 > C#/ASP.NET >>

请问如何让控件在最前端,不被别的控件挡住

问题是这样的
在一个对话框里面拖出几个控件
然后用代码又创建一个控件盖在他们上面
创建的时候是用setWindowPos设置位置的,可以挡住那些拖出来的控件
但是当鼠标停留在拖出来的控件上的时候那些拖出来的控件又显示出来了,把我动态创建的控件给挡住了
请问怎么解决这个问题啊? --------------------编程问答-------------------- 方法一:

//调用API
[System.Runtime.InteropServices.DllImport("user32", CharSet = System.Runtime.InteropServices.CharSet.Auto, ExactSpelling = true)]
public static extern IntPtr GetFocus(); //获得本窗体的句柄


[System.Runtime.InteropServices.DllImport("user32", EntryPoint = "SetForegroundWindow")]
public static extern bool SetFocus(IntPtr hWnd);//设置此窗体为活动窗体

 

// 定义变量,句柄类型
public IntPtr han;

……

private void Form1_Load(object sender, EventArgs e){
       //在窗体加载的时候给变量赋值,即将当前窗体的句柄赋给变量
       han = this.Handle;
}
……

private void timer1_Tick(object sender, EventArgs e){
       // 加载一个定时器控件,验证当前WINDOWS句柄是否和本窗体的句柄一样,如果不一样,则激活本窗体
        if (han != GetFocus()){
                SetFocus(han);
        }
        this.WindowState = FormWindowState.Normal;      

}

 

方法二:

[System.Runtime.InteropServices.DllImport("user32")]
private static extern IntPtr GetActiveWindow();//获取当前窗体的活动状态

 

// 判断当前窗口是否处于活动状态的方法
private bool ThisIsActive(){ return (GetActiveWindow() == this.Handle);}

 

private void timer1_Tick(object sender, EventArgs e){

       if (!ThisIsActive()){
                this.Activate();
       }
       this.WindowState = FormWindowState.Normal;

--------------------编程问答-------------------- 受教 受教! --------------------编程问答-------------------- 把控件作为弹出窗口来创建(WS_CHILD风格改成WS_POPUP风格,注意窗口坐标是相对于屏幕的)。 --------------------编程问答-------------------- 受教了! --------------------编程问答--------------------
友情帮顶下!顺便学习学习!
补充:.NET技术 ,  VC.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,