問題タブ [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.

0 投票する
3 に答える
57313 参照

vb.net - Vb.net の Application.Exit() および FormClosing イベント

システムトレイアイコンで実行されている単一のWindowsフォームアプリケーションがあります。ユーザーがWindowsフォームのXボタンを押すと、メッセージボックスに[はい]と[いいえ]が表示されます(はい->フォームを閉じる---いいえ->フォームを実行し続ける)システム トレイ アイコンで)。すでにインスタンスが実行されているときにユーザーがアプリケーションの別のインスタンスを開くシナリオを防ぐことを考えていたので、このコードを使用しました:

問題は、これをテストしたいときにメッセージが表示されることですが、[OK] を押すと、新しいメッセージ ボックスが表示されます (Private Sub Form_FormClosing からのもの)。[いいえ] を選択すると、インスタンスを実行する必要があります。Application.Exit が Form_FormClosing イベントを発生させることを読みました。

Form_FormClosing イベントのトリガーをキャンセルする可能性はありますか、それとも何か間違っていますか?

'これはフォームを閉じる手順です

PS: 私はプログラマーではないので、私に厳しくしないでください:)

0 投票する
2 に答える
2539 参照

c# - FormClosingイベントをバイパスする方法

私は次のコードを持っています:

このイベントをトリガーせずにフォームを閉じるボタンが必要です。どうすればよいですか?

ボタンのコード:

上記のボタンでフォームを閉じて、非表示にしないでください。

0 投票する
2 に答える
141 参照

c# - 彼らがチームを組まない限り、キャンセルはキャンセルせず、返品は返さないのはなぜですか?

このコードで:

... e.Cancel = trueがコメントアウトされている場合、フォームはとにかく閉じます。

... returnがコメントアウトされている場合、残りのコード (Close と Dispose) が実行されます (そのため、変更を保存しようとすると、接続が開いていないというエラーメッセージが表示されます)。

したがって、コードを動作させるには、両方 (キャンセルとリターン) を実行する必要があります。

これは正常ですか?/予想どおりですか?

0 投票する
3 に答える
6265 参照

c# - FormClosing() イベントが 2 回ロードされました

フォームを閉じる前に終了を確認する MessageBox を表示したい。したがって、FormClosing イベントが作成されます。

MessageBox が 2 回表示されています。デバッグ ツールは、どういうわけかコードが FormClosing() を 2 回超えていることを示しています。上記のように FormClosing() 内に何もない場合でも発生します。コード全体で FormClosing() を検索しましたが、サブスクライブされている場所は 1 つだけです。他の 2 つのプロジェクトに同じ FormClosing() がありますが、それは起こりません。誰でも私にポインタを与えることができますか?これは私には意味がありません。

0 投票する
1 に答える
180 参照

c# - プログラムを閉じる前に、すべての変更が保存されていることを確認するにはどうすればよいですか?

レーダー妨害装置を制御する大規模なc#プロジェクトが進行中です。プロジェクトがロードされると、3つのスレッドが作成され、それぞれが「メインフォーム」と呼ばれるスレッドを開きます(メインフォームの1つを閉じると、プログラムがシャットダウンされます。

私が現在直面している問題は、他のすべてのフォームが保存され、適切に閉じられていることを確認する前に、メインフォームの1つを閉じることができることです。このタスクを実行するための最良の方法は何ですか?私の現在の推奨事項は、開いているすべてのフォームを追跡するグローバルスタックを保持し、メインフォームを閉じる前に、スタック内のすべてのフォームを保存して閉じようとすることです。

0 投票する
3 に答える
2860 参照

c# - FormClosingイベントをキャンセルする親フォームを検出するにはどうすればよいですか?

メインフォームから次のように子フォームを開きます。

次に、子フォームは別のスレッドで描画を行います。

ユーザーがメインフォームを閉じようとすると(子フォームが開いている場合)、FormClosing最初にChildFormイベントが発生し、次にメインフォームで同じイベントが発生します。イベントが発生するFormClosingと、子フォームは描画スレッドを停止します。

保存されていないデータが含まれている場合、ユーザーはメインフォームを閉じようとする可能性があります。次に、メインフォームのイベントハンドラーによって、「データが保存されていません。閉じるのをキャンセルしますか? 」という警告が表示されます。FormClosingその後、保存をキャンセルできます(つまり、CancelフラグはFormClosingEventArgsメインフォームのFormClosingイベントハンドラーによってオブジェクトに設定されます)。

ただし、その時点で、子フォームのFormClosingイベントはすでに発生しており、描画スレッドは停止します。子フォームは、(何も起こらなかったかのように)描画を続行する必要があることを認識していません。

子フォームからFormClosing、メインフォームによってイベントがキャンセルされたことを検出することはできますか?ユーザーがメインフォームにデータを保存するように求められている間も、スレッドの再描画を停止したいと思います。

0 投票する
1 に答える
5265 参照

.net - FormClosingイベントでWinFormが閉じられて破棄されないようにするにはどうすればよいですか?

この質問は重複しているように見えるかもしれませんが、プログラムをテストしているときにこの問題に遭遇したばかりで、どのように解決するかについて少し混乱しています。

WinFormがあり、フォームを閉じるイベントがあります。イベントでは、ユーザーに「ウィンドウを閉じてもよろしいですか?」と尋ねるメッセージボックスを開きます。はいボタンを押すと、アプリケーションはウィンドウを閉じて、期待どおりに破棄されないようにします。だから、また開けます。ただし、ボタンを押さなかった場合でもウィンドウは閉じますが、ウィンドウは破棄されます。そのため、もう一度開こうとすると、「破棄されたオブジェクトにアクセスできません」という例外が発生しました。[ボタンを押さない]ボタンが押された場合、WinFormを開いたままにして、破棄しないようにします。

これが私のコードです:

ウィンドウを閉じて非表示にするようにe.Cancel=trueを設定する必要があるため、逆の操作(e.Cancel = falseで非表示なし)を実行すると、WinFormが閉じて破棄されなくなります。

これをどのように解決しますか?

少し早いですがお礼を、

0 投票する
1 に答える
1204 参照

c# - FormClosing イベントの Application.DoEvents

ThreadManagerテスト中に問題なく動作するカスタムを実装しました。ユーザーがアプリケーションを閉じたい場合、すべてのスレッドが終了するか、待機せずにアプリケーションを終了することを選択するまで (30 秒が経過した後)、終了が中断されます。

明確にする必要があるのは、使用がイベントApplication.DoEvents()で危険であるかどうかです。FormClosingそれを使用するか、スレッドが終了するのを待つ別の方法を見つけますか?

0 投票する
2 に答える
1956 参照

windows - .NETフォームの閉じをキャンセルすると、Windowsのシャットダウン時にフォームを閉じることができなくなります

こんにちは!

上記の簡単なコードを使用しています。ただし、コンピューターのシャットダウン中にアプリケーションが開いている場合、Windowsは、アプリケーションが閉じられるまで待機するか、続行するためにアプリケーションを終了するように要求します。ユーザーがアプリケーションを閉じようとしているのか、Windowsが閉じようとしているのかを知る方法が見つかりませんでした。私が知っているのは、どちらの状況でも、Windowsはウィンドウにクローズメッセージを送信しますが、これは実際には役に立ちません。私は他のいくつかの方法を考えることができますが、それでも「明確な」知る方法があるはずです。

前もって感謝します :)