设置Form.Owner时,Alt + Tab不显示表单

时间:2016-01-02 11:15:34

标签: vb.net winforms

我有一个名为MainForm的应用程序(VB.NET)和其他子窗体,而不使用MDI Container。子表单基于使用Me.Owner = MainForm

分配给MainForm

当我按下Alt + Tab时,为了在这些表格之间切换,Windows只显示MainForm,除非我删除Me.Owner = Nothing它再次按预期工作。

我在Onload函数上尝试了Call SetWindowLong但没有运气。我仍在寻找解决方案。

修改

实际上它很容易复制,我创建了非常简单的项目。

Simple Application

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim Form2 As New Form2
    Form2.Owner = Me ' Alt+Tab only Show Form1, not showing Form2.
    Form2.Show()
End Sub

禁用所有者属性再次正常工作。

请检查我的teamview recording。实际上它是原始形式,没有任何改变。

@Royce你的解决方案仍然无法正常工作,它从我这边抛出Win32Exception。

2 个答案:

答案 0 :(得分:0)

尝试将ShowInTaskbar属性更改为True

答案 1 :(得分:0)

在我的机器上运行您的示例(Windows 10),两个窗口都显示在我的Alt-Tab菜单中(screenshot)。

在原始程序中,请确保任一窗口的FormBorderStyle属性未设置为两个ToolWindow选项之一且ShowInTaskbar为True。

否则,您可以尝试通过执行与此类似的操作来更改第二个表单的CreateParams以排除WS_EX_TOOLWINDOW扩展样式位:

Protected Overrides ReadOnly Property CreateParams() As CreateParams
    Get
        Dim cp As CreateParams = MyBase.CreateParams
        cp.ExStyle = cp.ExStyle And (Not &H80)
        Return cp
    End Get
End Property