13

プロジェクトのソリューションの一部であるアプリケーションがあります。このプロジェクトでは、フォームを起動して非表示にしたいのですが、このフォームのトレイに通知アイコンが表示されています。

me.hideに追加してもform_load機能しないことはわかっています。スタートアップフォームをインスタンス化するモジュールを追加して、スタートアップオブジェクトとして設定しました。それもうまくいきませんでしたが。この形を見えなくするためのアイデアが不足しています。誰か助けてもらえますか?VB.NETを使用しています。

4

7 に答える 7

26

これをフォームコードに貼り付けます。

Protected Overrides Sub SetVisibleCore(ByVal value As Boolean)
    If Not Me.IsHandleCreated Then
        Me.CreateHandle()
        value = False
    End If
    MyBase.SetVisibleCore(value)
End Sub

動作する方法は、Applicationクラスによって行われる、フォームを表示する最初の要求であり、このコードはVisibleプロパティをオーバーライドしてFalseに戻します。この後、フォームは通常どおりに動作します。Show()を呼び出してフォームを表示し、Close()を呼び出してフォームが表示されなかった場合でも閉じることができます。Loadイベントは、表示するまで発生しないことに注意してください。イベントハンドラー内のコードがある場合は、コンストラクターまたはこのオーバーライドに移動してください。

于 2012-09-12T18:18:08.610 に答える
6

これをフォームの表示イベントに入れます

Me.Visible = False
于 2012-09-12T17:57:36.793 に答える
6

最も簡単な方法は、フォームの不透明度を0%に設定することです。表示したい場合は100%に戻します

于 2014-09-14T16:05:56.333 に答える
3

これを行うために私が見つけた別の方法があります。

フォームのプロパティを次のように設定します

ShowInTaskbar = False

次に、フォームのコンストラクターに追加します

WindowState = FormWindowState.Minimized

これは実装が非常に簡単で、ちらつきがなく機能します。私の場合、NotifyIconを使用して通知トレイからプログラムにアクセスし、設定するだけです。

WindowState = FormWindowState.Normal
Show()
BringToFront()

Notify_MouseClickイベントハンドラー内。

フォームを表示した後でフォームを再び非表示にするには、もう一度最小化するだけではうまくいきません。私の場合、Form_Closingイベントを使用して、フォームを非表示にします。

Hide()
于 2017-06-28T17:25:59.453 に答える
2

Me.Opacity = 0ロードイベント時にフォームを非表示にするために使用します。

次に、form.Shownイベントで次のコードを使用します

Me.Hide()
Me.Opacity = 100
于 2017-02-02T13:39:58.137 に答える
1

まったく異なるアプローチを捨てるために、その過負荷を使用しないApplication.Run()ことを検討しましたか(そして自動的に表示します)FormApplicationContext(または、より一般的には、独自のサブクラス)を渡すものを使用する場合はApplicationContext、動作を選択できます。詳細については、こちらをご覧ください。

http://msdn.microsoft.com/en-us/library/ms157901

于 2012-09-12T18:31:39.430 に答える
0

これを試して:

Sub New()
    MyBase.SetVisibleCore(False)
End Sub
于 2019-04-11T12:24:40.453 に答える