問題タブ [formclosing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
vb.net - Vb.net の Application.Exit() および FormClosing イベント
システムトレイアイコンで実行されている単一のWindowsフォームアプリケーションがあります。ユーザーがWindowsフォームのXボタンを押すと、メッセージボックスに[はい]と[いいえ]が表示されます(はい->フォームを閉じる---いいえ->フォームを実行し続ける)システム トレイ アイコンで)。すでにインスタンスが実行されているときにユーザーがアプリケーションの別のインスタンスを開くシナリオを防ぐことを考えていたので、このコードを使用しました:
問題は、これをテストしたいときにメッセージが表示されることですが、[OK] を押すと、新しいメッセージ ボックスが表示されます (Private Sub Form_FormClosing からのもの)。[いいえ] を選択すると、インスタンスを実行する必要があります。Application.Exit が Form_FormClosing イベントを発生させることを読みました。
Form_FormClosing イベントのトリガーをキャンセルする可能性はありますか、それとも何か間違っていますか?
'これはフォームを閉じる手順です
PS: 私はプログラマーではないので、私に厳しくしないでください:)
c# - FormClosingイベントをバイパスする方法
私は次のコードを持っています:
このイベントをトリガーせずにフォームを閉じるボタンが必要です。どうすればよいですか?
ボタンのコード:
上記のボタンでフォームを閉じて、非表示にしないでください。
c# - 彼らがチームを組まない限り、キャンセルはキャンセルせず、返品は返さないのはなぜですか?
このコードで:
... e.Cancel = trueがコメントアウトされている場合、フォームはとにかく閉じます。
... returnがコメントアウトされている場合、残りのコード (Close と Dispose) が実行されます (そのため、変更を保存しようとすると、接続が開いていないというエラーメッセージが表示されます)。
したがって、コードを動作させるには、両方 (キャンセルとリターン) を実行する必要があります。
これは正常ですか?/予想どおりですか?
c# - FormClosing() イベントが 2 回ロードされました
フォームを閉じる前に終了を確認する MessageBox を表示したい。したがって、FormClosing イベントが作成されます。
MessageBox が 2 回表示されています。デバッグ ツールは、どういうわけかコードが FormClosing() を 2 回超えていることを示しています。上記のように FormClosing() 内に何もない場合でも発生します。コード全体で FormClosing() を検索しましたが、サブスクライブされている場所は 1 つだけです。他の 2 つのプロジェクトに同じ FormClosing() がありますが、それは起こりません。誰でも私にポインタを与えることができますか?これは私には意味がありません。
c# - プログラムを閉じる前に、すべての変更が保存されていることを確認するにはどうすればよいですか?
レーダー妨害装置を制御する大規模なc#プロジェクトが進行中です。プロジェクトがロードされると、3つのスレッドが作成され、それぞれが「メインフォーム」と呼ばれるスレッドを開きます(メインフォームの1つを閉じると、プログラムがシャットダウンされます。
私が現在直面している問題は、他のすべてのフォームが保存され、適切に閉じられていることを確認する前に、メインフォームの1つを閉じることができることです。このタスクを実行するための最良の方法は何ですか?私の現在の推奨事項は、開いているすべてのフォームを追跡するグローバルスタックを保持し、メインフォームを閉じる前に、スタック内のすべてのフォームを保存して閉じようとすることです。
c# - FormClosingイベントをキャンセルする親フォームを検出するにはどうすればよいですか?
メインフォームから次のように子フォームを開きます。
次に、子フォームは別のスレッドで描画を行います。
ユーザーがメインフォームを閉じようとすると(子フォームが開いている場合)、FormClosing最初にChildFormイベントが発生し、次にメインフォームで同じイベントが発生します。イベントが発生するFormClosingと、子フォームは描画スレッドを停止します。
保存されていないデータが含まれている場合、ユーザーはメインフォームを閉じようとする可能性があります。次に、メインフォームのイベントハンドラーによって、「データが保存されていません。閉じるのをキャンセルしますか? 」という警告が表示されます。FormClosingその後、保存をキャンセルできます(つまり、CancelフラグはFormClosingEventArgsメインフォームのFormClosingイベントハンドラーによってオブジェクトに設定されます)。
ただし、その時点で、子フォームのFormClosingイベントはすでに発生しており、描画スレッドは停止します。子フォームは、(何も起こらなかったかのように)描画を続行する必要があることを認識していません。
子フォームからFormClosing、メインフォームによってイベントがキャンセルされたことを検出することはできますか?ユーザーがメインフォームにデータを保存するように求められている間も、スレッドの再描画を停止したいと思います。
.net - FormClosingイベントでWinFormが閉じられて破棄されないようにするにはどうすればよいですか?
この質問は重複しているように見えるかもしれませんが、プログラムをテストしているときにこの問題に遭遇したばかりで、どのように解決するかについて少し混乱しています。
WinFormがあり、フォームを閉じるイベントがあります。イベントでは、ユーザーに「ウィンドウを閉じてもよろしいですか?」と尋ねるメッセージボックスを開きます。はいボタンを押すと、アプリケーションはウィンドウを閉じて、期待どおりに破棄されないようにします。だから、また開けます。ただし、ボタンを押さなかった場合でもウィンドウは閉じますが、ウィンドウは破棄されます。そのため、もう一度開こうとすると、「破棄されたオブジェクトにアクセスできません」という例外が発生しました。[ボタンを押さない]ボタンが押された場合、WinFormを開いたままにして、破棄しないようにします。
これが私のコードです:
ウィンドウを閉じて非表示にするようにe.Cancel=trueを設定する必要があるため、逆の操作(e.Cancel = falseで非表示なし)を実行すると、WinFormが閉じて破棄されなくなります。
これをどのように解決しますか?
少し早いですがお礼を、
c# - FormClosing イベントの Application.DoEvents
ThreadManagerテスト中に問題なく動作するカスタムを実装しました。ユーザーがアプリケーションを閉じたい場合、すべてのスレッドが終了するか、待機せずにアプリケーションを終了することを選択するまで (30 秒が経過した後)、終了が中断されます。
明確にする必要があるのは、使用がイベントApplication.DoEvents()で危険であるかどうかです。FormClosingそれを使用するか、スレッドが終了するのを待つ別の方法を見つけますか?
windows - .NETフォームの閉じをキャンセルすると、Windowsのシャットダウン時にフォームを閉じることができなくなります
こんにちは!
上記の簡単なコードを使用しています。ただし、コンピューターのシャットダウン中にアプリケーションが開いている場合、Windowsは、アプリケーションが閉じられるまで待機するか、続行するためにアプリケーションを終了するように要求します。ユーザーがアプリケーションを閉じようとしているのか、Windowsが閉じようとしているのかを知る方法が見つかりませんでした。私が知っているのは、どちらの状況でも、Windowsはウィンドウにクローズメッセージを送信しますが、これは実際には役に立ちません。私は他のいくつかの方法を考えることができますが、それでも「明確な」知る方法があるはずです。
前もって感謝します :)