デスクトップアプリケーションを非表示にしたいのですが、一定時間が経過すると表示されます。ウィンドウロードイベントでVisible = falseを設定しようとしていますが、それでも表示されます。C#デスクトップアプリケーションでウィンドウを非表示にする方法は?
答えて
は、WinFormsのアプリケーションでは、私はスタートアップ可視性を制御する最も簡単な方法は、SetVisbileCoreメソッドをオーバーライドすることであることを見出しました。ここで
は簡単な例で、フォームはApplication.Run()
代わりのApplication.Run(new Form1())
を使用して、5秒ごMain
方法で
using System;
using System.Windows.Forms;
namespace DelayedShow
{
public partial class Form1 : Form
{
private bool _canShow = false;
private Timer _timer;
public Form1()
{
InitializeComponent();
_timer = new Timer();
_timer.Interval = 5000;
_timer.Tick += new EventHandler(timer_Tick);
_timer.Enabled = true;
}
void timer_Tick(object sender, EventArgs e)
{
_canShow = true;
Visible = true;
}
protected override void SetVisibleCore(bool value)
{
if (_canShow)
{
base.SetVisibleCore(value);
}
else
{
base.SetVisibleCore(false);
}
}
}
}
Hide()を呼び出すと、すべてのHideがVisible = falseになります。 SetVsibileCoreはShow/Hide/Visibleが使用されるときに呼び出されるコア関数です。フレームワークは自動的に 'SetVisibleCore'をオーバーライドすることでフォームを表示しようとします。自動呼び出しを傍受してカスタム処理を提供することができます。 –
ありがとうございます。私はSetVisibleCoreをオーバーライドしなければならなかった。それは@Hansによって言及される副作用があります –
後に表示されます。その後、しばらくしてnew Form1()
とform1.Show()
を使用してください。
あなたはthis.Hide()
代わりのVisible = false
を試してみましたか?
また、フォームオブジェクトを渡さずにアプリケーションを起動することもできます。
Application.Run();
しばらく待ってから(Timer
を使用)、フォームを開きます。
ありがとうございます。私はタイマーを使用しています。そして、私はHideメソッドを使ってうまく動作することを理解しました。乾杯 –
これらのうちの1つに答えを記入するのはどうですか? – decyclone
申し訳ありませんが、気付いたばかりのhideが動作しません。 –
VisibleプロパティはWinformsでは大したことですが、これをtrueに設定するとネイティブWindowsウィンドウが作成されます。その1つの副作用は、OnLoadメソッドまたはLoadイベントでfalseに設定することは機能しません。 Hide()について特別なことは何もないので、Visibleをfalseに設定するだけなので、どちらも機能しません。
SetVisibleCore()をオーバーライドする方法があります。ただし、ネイティブウィンドウを作成できるようにすることは重要です。他の場合はフォームを閉じることはできません。
protected override void SetVisibleCore(bool value) {
if (!IsHandleCreated && value) {
value = false;
CreateHandle();
}
base.SetVisibleCore(value);
}
Show()を呼び出すかVisible = trueに設定すると、いつでもウィンドウを表示することができます。そして、あなたがそれを見えるようにしていなくても、Close()を呼び出します。これはコンテキストメニューでのみ表示されるポップアップウィンドウでNotifyIconを実装するのに適しています。
これは副作用を持っていることに注意してください、読み込み時()メソッドとLoadイベントは、それが実際に見える取得する最初の時間までは実行されません。コードを移動する必要があるかもしれません。
システムトレイ
- にあなたのC#アプリケーションを配置すると、開始するには、既存のC#のWindowsフォームを開きます(または新規作成)。
- Visual Studioツールボックスを開きます。
- NotifyIconコントロールをフォームにドラッグします。コントロールは、フォーム自体に視覚的な表現がないため、デフォルトでnotifyIcon1という名前が付けられ、フォームの下に配置されます。
- NotifyIconコントロールのTextプロパティを、ユーザーがアプリケーションアイコン上でマウスを一時停止したときに表示する名前に設定します。たとえば、この値は「KillerApp 1.0」です。
- コントロールのアイコンプロパティを、システムトレイに表示するアイコンに設定します。
ヒント:あなたがアイコンファイルに変換したい BMPファイルがある場合、私は非常に アイコン3.5アプリケーションにQTamビットマップをお勧めします 。
- アプリケーションが最小化されたときにアプリケーションを非表示にするフォームのResizeイベントのイベントハンドラを追加します。そうすれば、タスクバーには表示されません。
private void Form1_Resize(object sender, System.EventArgs e)
{
if (FormWindowState.Minimized == WindowState)
Hide();
}
- NotifyIcon.DoubleClickイベントのイベントハンドラを追加し、次のようにアイコンをダブルクリックすると、アプリケーションが復元されるようにコーディングします。
private void notifyIcon1_DoubleClick(object sender,
System.EventArgs e)
{
Show();
WindowState = FormWindowState.Normal;
}
あなたにもこれを試すことができます。..
public partial class Form1 : Form
{
public delegate void myHidingDelegate();
public Form1()
{
InitializeComponent();
myHidingDelegate dlg = new myHidingDelegate(mymethodcall);
dlg.BeginInvoke(null, null);
}
public void mymethodcall()
{
myHidingDelegate dlg1 = new myHidingDelegate(HideForm);
this.Invoke(dlg1);
}
public void HideForm()
{ this.Hide(); }
}
これの唯一の問題:フォームが一瞬点滅し、
- 1. ウィンドウを非表示にする方法
- 2. C#でプロセスを非表示/非表示にする方法は?
- 3. ウィンドウを表示/非表示にする最善の方法
- 4. jqueryウィンドウ内のイメージマップからdivを表示/非表示にする方法は?
- 5. シミュレートは非表示ウィンドウに
- 6. Windows:非ブロッキングアラート/確認ウィンドウを表示する方法は?
- 7. ウィンドウ上のサブプロセスのstdoutを非表示にする方法
- 8. C#DataSourceでDataGridViewの行を非表示にする方法
- 9. objective-cでキーボードを非表示にする方法
- 10. asp.net/C#でmenupathのmenuesを非表示にする方法
- 11. メインウィンドウのクロムエクステンションを非表示/非表示にする方法
- 12. ぼかし効果によるWPFウィンドウの表示/非表示方法
- 13. Visual C++ 2005:デバッグセッション中にウィンドウを表示する方法
- 14. ウィンドウのプロパティを非表示にする方法はありますか?
- 15. 親ウィンドウに子ウィンドウを表示する方法は?
- 16. JPanelをJFrameに表示/非表示する方法は?
- 17. デスクトップアプリケーションでWindows 8のオンスクリーンキーボードを表示する方法
- 18. EmberJSでビューを表示/非表示にする方法
- 19. wicketでyui.calendar.DatePickerを表示/非表示にする方法
- 20. ナビゲーション・ドロワーをプログラムで表示/非表示にする方法
- 21. C#、フォームを非表示にして別のフォームを表示する方法
- 22. javascriptを使用してdivを非表示/非表示にする方法は?
- 23. ボタンの表示/非表示方法は?
- 24. Cのコマンドプロンプトを非表示にする方法
- 25. デフォルトキーボードを非表示にする方法
- 26. アイテムを非表示にする方法
- 27. ツールバーを非表示にする方法
- 28. Java SwingベースのGUIでSplitPaneを非表示/非表示にする方法
- 29. C#のタスクマネージャでコンソールアプリケーションを非表示にする方法はありますか?
- 30. CMD.EXEウィンドウを表示する方法
消え、私はあなたが使用しているので、これはWinFormsのアプリケーションであることを前提としていVisible = False、これは正しいですか? –