gpt4 book ai didi

.net - 当 ShowinTaskBar 为 false 时,窗口消失

转载 作者:行者123 更新时间:2023-12-05 00:53:59 27 4
gpt4 key购买 nike

在我的应用程序中,我有主窗体和子窗体。我想将子窗体的 ShowIntaskBar 设置为 false,但问题是当我通过菜单打开它时,它会快速出现和消失,然后当我再次打开它时,它会变得可见。所以我不想打开它两次才能看到它。如何解决这个问题?

子表单代码:

 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load


Me.ShowInTaskbar = False


End Sub

父(主)表单代码:

 Private Sub إضافةبائعجديدToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles إضافةبائعجديدToolStripMenuItem.Click
Form1.ShowDialog()


End Sub

最佳答案

这是 Winforms 中的错误。 ShowInTaskbar 属性是一个非常重要的属性,它只能在创建 native 窗口时指定。在引擎盖下,它是传递给 CreateWindowEx() 的样式标志。 winapi 函数,必须在第一个参数中使用 WS_EX_APPWINDOW 样式才能显示任务栏按钮。

问题是,在 Load 事件触发时,该调用已经发出。触发 Load 事件的是 CreateWindowEx() 调用。所以 Winforms 必须做一些非常重要的事情,它必须销毁 native 窗口并重新创建它,现在为第一个参数使用不同的值。这通常工作得很好,但有时会出错。在您的情况下,它与 ShowDialog() 调用的交互非常差。这确保当对话框窗口关闭或隐藏时对话框自动关闭。它已关闭,作为您的 ShowInTaskbar 分配的副作用。但当然是出于错误的原因。

您必须确保在 Load 事件触发之前设置该属性。您可以使用窗体的构造函数来完成此操作。修复:

Public Sub New()
InitializeComponent()
Me.ShowInTaskbar = False
End Sub

或者在设计窗体时在“属性”窗口中设置属性即可。

关于.net - 当 ShowinTaskBar 为 false 时,窗口消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20442965/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com