CheckedChangedイベント(または他のC#イベント)がユーザーイベントとして宣言される方法はありますか?問題は、プロパティCheckedがコードによって変更された場合、イベントが呼び出され、これは望ましくないことです(たとえば、イベントはプロパティイベントではなくユーザーイベントです)。私はブール値のフラグを渡して、これは2011年にちょっと厄介です!ユーザーイベント - たとえばチェックボックス
答えて
イベントの登録を解除することができます。値を変更した後、再度購読することができます。
this.checkBox1.CheckedChanged -= new EventHandler(checkBox1_CheckedChanged);
this.checkBox1.Checked = true; // will not firing the CheckedChanged event
this.checkBox1.CheckedChanged += new EventHandler(checkBox1_CheckedChanged);
alternativlyあなたはこのことができます
希望に動作します。この
bool isUser = true;
public Form1()
{
InitializeComponent();
isUser = false;
this.checkBox1.Checked = true;
isUser = true;
}
void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if (!isUser) // check if the change has fired by user
return;
// ...
}
両方のように迂回するように変数を設定することができます。
それは有望なようです、私はそれを見ていただきありがとうございます。これは、私が行ったことでした。 1つのイベントが他のイベントとやりとりするので、購読の解除はより明確ですが、逆に進むと混乱します。 – Sunscreen
お手伝いができたらうれしいです。 – dknaack
'this.checkBox1.CheckedChanged - = new EventHandler(checkBox1_CheckedChanged);と書くのは大変だと思います。'新しいEventHandler(checkBox1_CheckedChanged) 'ではないのですか? yesの場合、その新しいオブジェクトは既に 'CheckedChanged'コレクションに存在することはできません。私はすぐにあなたの言葉を信じますが、このコードはあなたがそれを暗示しているように機能します。 – DonkeyMaster
C#は "ユーザーイベント"をサポートしていません。キーワードイベントを使用して指定された1つのタイプのイベントのみをサポートしています(基本的にはによって制御されたの委任参照)。 C#がイベントをどのように処理するかについてもう少し詳しく知りたい場合はJon Skeet's excellent treatment of the subject hereをご覧ください。
今、あなたが比較しているのは、本当にリンゴにリンゴではありません。 MFCはフレームワークです。 C#は言語です。だから、フレームワークのところでは、それはフレームワークに依存します。あなたの例では、WinFormsを参照しているようです。それがそうだとすれば、答えは残念ながら「いいえ」です:WinFormsは、あなたが記述したように「ユーザイベント」をサポートしていません。
- 1. Nettyユーザーイベント
- 2. ユーザーイベントからの発砲イベント
- 3. NetSuite SuiteScript 2.0ユーザーイベント電子メールイベントタイプ
- 4. `たとえばgolang
- 5. チェックボックスを表示するはいとチェックボックスいいえ
- 6. 複数のチェックボックスを備えたLaravelフィルタシステム
- 7. ジャンゴ - たとえば検索
- 8. Matlabの:たとえばリスト
- 9. ガトリングは、たとえば、
- 10. Magentoの:たとえば、URL
- 11. Firebase:たとえば迅速
- 12. たとえばSQLサーバ
- 13. ISSETたとえば、ユーザ
- 14. AWK:キャプチャグループたとえば
- 15. のNode.js - たとえば
- 16. Pythonの - たとえば、リスト
- 17. のLua:たとえば、パラメータ
- 18. マッチ番号たとえば
- 19. たとえば、ここで
- 20. パイソン:パンダ:インデックステーブルたとえば
- 21. はたとえば、Java
- 22. BottomSheetDialogFragment - ユーザーイベントによって却下された場合
- 23. チェックボックスとラベルタグを揃える方法は?
- 24. チェックボックスとはい/いいえASP.Net-Jquery
- 25. PHPのチェックボックスとURLの書き換え
- 26. クリックしたときにチェックボックスが消える
- 27. 「昨日と先週の比較」チェックボックスが消えました
- 28. DataGridViewでチェックボックスをチェックしたことを覚えています
- 29. サイズ変更フォントとたとえば、フォントサイズ
- 30. Angular2:すべてのユーザーイベントをキャプチャする方法
変更が発生した場所に気を付けると、何か間違っている大きなチャンスがあります。チェックボックスがコードから設定されているのはなぜ重要ですか? – Jon
@ジョン - あなたは非常に良い点を持っています。まれに、イベントがユーザ生成であるのか、コード生成で生成されたのかを抽象化する必要があるかどうかを知ることは有益ですが、 –
@Jonそれは役に立つと思うケースがいくつかあります。たとえば、ユーザーがボックスをチェックしたときにログに書き込む場合、またはユーザーがチェックボックスをオンにしたときにメッセージボックスを表示する場合は、コードから呼び出したときにメッセージボックスを表示する必要がある場合。確かに、別のレイヤーのような基になる変数を追加して、それをより良くサポートするアーキテクチャを得ることができますが、単純な例外をオーバーエンジニアリングするのでしょうか? – DonkeyMaster