メニューを含むMDIParentウィンドウフォームを使用しています。同じメニューを再度クリックすると、新しいウィンドウが開きます。それが既に開いている場合は、ウィンドウを再オープンするのを止める方法は?クリックするたびにウィンドウフォームが表示されるべきではありません。C#を使用してクリックして再び開くためにウィンドウフォームを停止する方法は?
0
A
答えて
1
2つの方法:
ウェイ1、フラグ:
フラグ(またはフラグのリスト)を保持開放形態について。
フォームを開く(新しい()を作成する)たびに、フラグを "true"に設定します。
フォームが閉じると、フラグをfalseに設定します。
ボタンのクリックイベントで、フラグをチェックして、フォームを新規作成する前に開いているかどうかを確認します。
ウェイ2、参照を保持:
あなたが使用しているすべてのフォームにメインフォームで参照してください。
フォームが開いていない場合は、nullとして初期化します。
新しいフォームを開くと、そのフォームへの参照が設定されます。
ボタンのクリックイベントで、新しいイベントを作成する前にフォームの参照がnullかどうかを確認します。
私は第2の方法を好みます。すべてのサブフォームへの参照がある場合は、リソースを簡単に制御できます。
0
開いているフォームのリストを維持したり、onClickイベントのリストをチェックしたり、フォームを開いたときにメニューアイテムを無効/有効にしたりできます。
2
Application.OpenFormsプロパティを使用してください。
Boolean found =
Application.OpenForms.Cast<Form>().Any(form => form.ID == "TargetFormID"
if (!found)
{
// Open a new instance of the form //
}
0
別の理由は、使用するデフォルトのインスタンスを保持するForm
にProperty
を作成することです。
private static Form _defaultInstance;
public static Form DefaultInstance()
{
get {
if(_defaultInstance == null || _defaultInstance.IsDisposed)
{
_defaultInstance = new yourTypeHere();
}
return _defaultInstance;
}
}
そして今、あなたは、常にこのプロパティを介して、あなたのウィンドウにアクセス:
yourTypeHere.DefaultInstance.Show();
関連する問題
- 1. CADisplayLinkを正しく停止して再開する方法は?
- 2. 停止()を使用して再開したアニメーションが遅い
- 3. WebRequestMethods.Ftp.UploadFileプロセスを一時停止して再開する方法は?
- 4. Cでしばらくして再帰を止める方法
- 5. Azure Automationを使用してサービスファブリックノードを開始および停止する方法
- 6. aframe/animation:一時停止して再開する方法は?
- 7. ウィンドウフォームのボタンをクリックしてC++を呼び出す
- 8. JavaScriptを使用してCSS3アニメーションを一時停止して再開する方法は?
- 9. JavaScriptを使用してGIFを一時停止および再開する方法
- 10. Javaでタイマーを一時停止/再開して停止するには?
- 11. ボタンをクリックしてhtmlページの実行を一時停止して再開する方法
- 12. 反応ネイティブを使用して、アンドロイドメディア(再生、一時停止、停止)を使用する方法
- 13. アクティビティの再開中にonConnectedの呼び出しを停止する方法(Android)
- 14. セロリタスクを一時停止または再開する方法は?
- 15. ASP.NETウィンドウフォーム認証を使用して非ローカルアクセスを防止する方法
- 16. UIViewPropertyAnimatorを使用して制約アニメーションを一時停止し、再開する
- 17. WMPLib.WindowsMediaPlayerを使用してC#winformsで一時停止したmp3ファイルを再開する
- 18. Windows phoneのXNAゲームを停止して再開する方法は?
- 19. アンドロイドでタイマーとプログレスバーを一時停止して再開する方法は?
- 20. キャンセルボタンをクリックして埋め込みを停止/一時停止する方法は?
- 21. スレッドプールでの作業、すべてのスレッドの一時停止、再生、再開、および停止方法
- 22. 5分後に機能を停止して再開する方法
- 23. mousePressedをクリックして1回再生し、2回クリックすると停止する方法は?
- 24. C#スレッド - スレッドを開始および停止する方法
- 25. サムスンブルーレイデバイスの停止ボタンを使用してrtmpストリームを停止する方法
- 26. 私のプログラムを一時停止して再開したい
- 27. ソートプログラムを一時停止して後で再開したい
- 28. android-beacon-library(altbeacon)を使用してスキャンビーコンを正しく停止する方法
- 29. XAMPP - 終了をクリックしてサービスを停止する方法?
- 30. ウィンドウの外をクリックしてmousemoveイベントを停止する方法
あなたは)(そのメニュー項目のクリックでコードを表示することができますか?私はイベントハンドラが呼び出されるたびにそのFormオブジェクトを再作成するためだと思います。 –
このような問題をコードなしでデバッグすることはできません。私はそれを見るために画面の近くに座っていません。質問を編集して、MDIParentフォームの 'Click'イベントハンドラメソッドを追加してください。 –