Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实例化表单而不丢失对现有表单的关注_C#_Winforms_Compact Framework_Focus - Fatal编程技术网

C# 实例化表单而不丢失对现有表单的关注

C# 实例化表单而不丢失对现有表单的关注,c#,winforms,compact-framework,focus,C#,Winforms,Compact Framework,Focus,我在.NET2.0的compact框架上有一个应用程序。当我实例化自定义表单时,我看到的当前表单似乎失去了焦点。我的新表单不可见,我还没有对其调用ShowDialog,但是我的当前表单仅仅通过调用新表单上的构造函数就失去了焦点。关于如何解决这个问题有什么想法吗?问题似乎类似,但在compact framework上没有ShowWithoutActivation属性。使用WinApi特定代码可能会有所帮助: protected override CreateParams CreateParams

我在.NET2.0的compact框架上有一个应用程序。当我实例化自定义表单时,我看到的当前表单似乎失去了焦点。我的新表单不可见,我还没有对其调用ShowDialog,但是我的当前表单仅仅通过调用新表单上的构造函数就失去了焦点。关于如何解决这个问题有什么想法吗?问题似乎类似,但在compact framework上没有ShowWithoutActivation属性。

使用WinApi特定代码可能会有所帮助:

protected override CreateParams CreateParams
{
    get
    {
        CreateParams cp = base.CreateParams;
        cp.Style |= WindowStyle.WS_POPUP;
        cp.ExStyle |= ExStyle.WS_EX_TOPMOST | ExStyle.WS_EX_NOACTIVATE;
        return cp;
     }
}

您始终可以在之后重新声明当前表单的焦点。这是一种黑客行为,但可能对你有用。我考虑过这一点,但我有两个问题:1创建第二个表单的代码不知道第一个表单,也不应该知道。在已知第一个表单的调用代码中,我也没有机会这样做。2当第一个表单丢失并重新获得焦点时,仍然会出现闪烁。这看起来非常有用,但在compact框架中不存在CreateParams属性。