.NET中如何让以前打开的窗体在鼠标click后显示在最前面?

问题描述

请教各位大侠:我在.NET中写了一个程序,主界面frmMain用菜单窗体形式,其中从菜单menuMain中选择可以将Form1窗体显示在主界面的菜单框架下,另外从其他菜单选择可打开若干独立窗体Form2等。但是问题在于:(1)先点menuMain打开Form1,然后再打开Form2或者(2)先打开Form2,再点menuMain打开Form1不论以上两种执行顺序的哪一种情况下,用鼠标点击Form1的任一个地方,让Form1获得焦点,但是Form1始终处于Form2的后面,导致Form1的很多部分被Form2掩盖掉。我看了一下,frmMain,Form1,Form2的.SetTopMost属性=False,这就很让人疑惑。有哪位高手,可否给与指点迷津:如何让鼠标点到哪个窗体,就让该窗体显示在最前面,而不被其他窗体掩盖掉?

解决方案

解决方案二:
frm.BringToFront();
解决方案三:
在Form1_Focus()中写该语句吗?还需要设置.NET窗体中的什么属性吗?CauseInvalidate做什么用的?还有一个属性,好像有Inherit,Disable,EnablePreventFocusChange,EnableAllowFocusChange四个值可选,做什么用的?
解决方案四:
感觉好像你两个窗口Show出来的方式不同,以及Owner属性不同。
解决方案五:
楼上说Owner属性,在哪里设置?menuMain是mdiForm形式的,Form1确实是其子窗体;而Form2是独立窗体。不过Form1,Form2都是用Form.Show()方法显示啊;
解决方案六:
把你的form1和form2的FormborderStyle设成FixedDialog试试

时间: 2024-07-30 09:52:33

.NET中如何让以前打开的窗体在鼠标click后显示在最前面?的相关文章

C# SplitContainer 打开子窗体的鼠标样式的问题

问题描述 新开启一个字窗体在SplitContainer.Panel2中,但是整个Panel2的区域鼠标样式不是normal的,我需要变成正常的样式.打开的childform的代码如下:frmChild1myChildForm=newfrmChild1(this);foreach(ControlctinsplitContainer1.Panel2.Controls){ct.Dispose();}splitContainer1.Panel2.Controls.Clear();myChildForm

在线等~vb.net中有没方法可以使MDI中打开一个窗体时关闭其他窗体

问题描述 不是手动一个个窗体Close方法而是打开一个窗体时``其他不活动的窗体全部关闭 解决方案 解决方案二:vb.net中一个CLOSE就关闭所有对象了,好像是foreachmdiinmdismdi.disposenext哈哈,自己去查下方法吧解决方案三:1.如果在打开一个窗口前关闭的话ForEachformAsFormInMdiChildrenform.Close()Next2.如果打开一个窗口后关闭其他不活动的DimactiveMdiAsForm=ActiveMdiChildForEac

outlook 2013 中如何在新打开窗体添加插件?

问题描述 RT,我使用了netofficeoutlook的插件..在主窗体的上面就可以加载插件,但是在编写新邮件/弹出回复时插件一直活动在主窗体上.无法加载到新打开的页面.我在Outlook.Inspectors对象中注册了NewInspectorEventHandler事件.我想让每个打开的mail窗体都有插件.这个请问怎么做?在邮件编辑下方我想出现我自己的插件,而不是在上面RibbonUI中.请给我一些资料和关键字吧.谢谢..另外,标记的这个是否有公开的接口?可以自行添加tab?我尝试在主窗

通过反射找到了已经打开的窗体。怎么调用窗体中的方法,求大神指点。

问题描述 stringwindowsName="注册";IntPtrhandle=NativeMethods.FindWindow(null,windowsName);if(handle!=IntPtr.Zero){Formfrm=(Form)Form.FromHandle(handle);frm.Activate();//frm.Go(user);} 通过反射找到了已经打开的窗体.怎么调用窗体中的方法,求大神指点. 解决方案 解决方案二:我自己顶求关注解决方案三:Invoke解决方案

C# winform登录验证成功关闭窗体打开新窗体

问题描述 登录窗体:w_1,WEBBROSWER登录内容登录成功后关闭w_1打开新窗体w_2怎么实现,w_1WEBBROSWER 解决方案 解决方案二:全局静态变量:staticboolok=false;先打开主窗体,在OnLoad的时候模式打开登录窗体登录窗体中验证成功时,ok=true;登录窗体返回后,检测if(!ok)Close();解决方案三:有个非模式化窗体的设置,showdialog,查询MSDN会告诉你关于这个窗体的代码解决方案四:可以下载这个反编译看一下.http://downl

关于窗体切换问题,不new form()能打开其他窗体吗

问题描述 关于窗体切换问题,不new form()能打开其他窗体吗 请问高手,winform中form1中和form2中个有一个切换两个窗体的按钮和个一个textbox1文本框,我在form1中填好值以后打开form2,然后再从form2返回后,form1中文本框的值就没了,因为new了一个form1,同样的在form2中填好数据以后,再进来的时候这个值又没了,因为都新建了一个form,所以这样的应该怎么解决 解决方案 http://bbs.csdn.net/topics/360140208 另

实例-跪求大神啊,VB中dwgthumb控件打开DWG文件时需要设置什么参数

问题描述 跪求大神啊,VB中dwgthumb控件打开DWG文件时需要设置什么参数 VB中dwgthumb控件打开DWG文件时需要设置什么参数,用没用实例呢,谢谢啊,大神 解决方案 http://www.newxing.com/Code/VB/TXCL/dwg_462.htmlhttp://download.csdn.net/detail/dirk2212/4197363http://download.csdn.net/download/dirk2212/4198022http://www.edu

ShowDialog() 新打开的窗体有的时候不置顶,跑到后面去了

问题描述 ShowDialog()新打开的窗体有的时候不置顶,跑到后面去了绝大部分情况下是没有问题的,能在最前面打开新窗体.无法重现,偶尔情况下会遇到. 解决方案 解决方案二:暂时还没出现这问题解决方案三:你是不是开辟新的线程了,建议挪到线程外面弹出,这样就可以了解决方案四:topmost=true解决方案五:引用3楼clxcxx的回复: topmost=true 这样不是跟任务管理器一样,始终都在最前面解决方案六:不知道,我先试试TopMost=true;这个看行不行.主要是这个问题非常难以重

c#-C#能不能创建一个指向已经打开的窗体的对象

问题描述 C#能不能创建一个指向已经打开的窗体的对象 我有两个窗体,点击form1上的按钮显示form2,现在要在form2中操作form1的控件,想要一个指向这个已经打开的form1的对象,这个要怎么做 解决方案 可以用Application.OpenForms集合遍历已经打开的窗口. 解决方案二: 可以在打开form2的时候指定owner参数,比如: Form2 form2 = new Form2(); form2.Show(this); 这样,在form2里可以通过Owner属性来访问fo