Tag: z顺序

如何在C#中显示前面的表格

伙计们, 请问有没有人知道如何从一个看不见的应用程序中显示一个表单, 并让它获得焦点(即出现在其他窗口的顶部)? 我在C#.NET 3.5中工作。 我怀疑我采取了“完全错误的做法”……我没有 Application.Run(新的TheForm())而不是我(新的TheForm())。ShowModal() … Form基本上是一个模态对话,带几个复选框; 文本框,以及确定和取消按钮。 用户勾选一个复选框并输入描述(或其他)然后按OK,表单消失,进程从表单中读取用户输入,处理它,然后继续处理。 这是有效的,除非表单显示它没有得到焦点,而是它出现在“主机”应用程序后面,直到你在任务栏中点击它(或其他)。 这是一个最烦人的行为,我预测会导致许多“支持调用”,而现有的VB6版本没有这个问题,所以我在可用性方面倒退了…用户不会接受(并且也不应该)。 所以…我开始认为我需要重新考虑整个shebang …我应该预先显示表单,作为“正常应用程序”并将处理的剩余部分附加到OK按钮单击事件。 它应该工作,但这需要时间,我没有(我已经超过时间/预算)…所以首先我真的需要尝试使当前的方法工作…即使快速和 – 脏的方法。 所以,请有人知道如何“强制”.NET 3.5表格(通过公平的方式或家禽)来获得焦点? 我在想“魔术”的Windows API调用(我知道 Twilight Zone:这似乎只是工作中的一个问题,我们在Windows XP SP3上使用Visual Studio 2008 …我刚刚在家中无法使用SSCCE(见下文)重现问题关于Vista Ulimate的C#2008 ……这很好用。 咦? WTF? 另外,我发誓昨天在工作时显示了我运行EXE时的表格,但不是直接从IDE(我刚刚忍受的)F5’(或Ctrl-F5’ed)时… …在家里表格显示正常。 Totaly confusterpating! 它可能相关,也可能不相关,但Visual Studio今天早上在调试模式下运行并“动态”编辑代码时崩溃并烧毁…它被卡住了我认为是无限循环的错误消息。 错误消息是关于“无法调试此项目,因为它不是当前项目,或者其他东西……所以我只是使用进程资源管理器将其删除。它再次启动,甚至提供恢复”丢失“文件,我接受的报价。 using System; using System.Windows.Forms; namespace ShowFormOnTop { static class Program { [STAThread] static void Main() […]