- くだすれC++/CLI(初心者用)part2
937 :デフォルトの名無しさん[sage]:2016/02/20(土) 19:06:01.50 ID:HOPxSzsv - 質問です。
+= で追加したフォームのイベント順を入れ替えたいのですが、やり方はありますか? 条件 1. デザイナは使いたい(既に大量に使っている) 2. 格好悪い書き方で全く問題ないが、全体的に書き直すのはNG 状況 numericUpDown->Changed 等に対してデザイナ上から再描画関数を割り当てています。(A) (波形を表示する時のボリュームのような使い方です) デザイナではフォームはデフォでは static でないため、 内部の別クラスからは numericUpDown->Value 等にはアクセスできません。 (自分でstaticと書いてコンパイルを通すことは出来ますが、デザイナで変更するたびに戻されます) そこでイベントに別関数も割り当て、そこで内部 static struct に Value 等を書かせ、(B) 別クラスからはこの static struct を参照しています。 このとき、AとBの経路が完全に分離しているうちはよかったのですが、 統合していくうちにA内部から別クラスを呼ぶことが発生し、 static struct が未更新なのでバグっています。 イベントは追加順に呼ばれるようです。 デザイナで指定したイベント関数はフォーム生成時に指定される為、必ず A->B の順で呼ばれることになります。 これを B->A の順に入れ替えたいのですが、方法はありますか?
|
- くだすれC++/CLI(初心者用)part2
938 :デフォルトの名無しさん[sage]:2016/02/20(土) 19:06:30.87 ID:HOPxSzsv - プログラムイメージ
Form^ someForm; // デザイナで作成したため、static ではない someForm->Changed += 再描画関数; // (A) someForm->Changed += struct更新関数; // (B) static ref struct FormData { Decimal someForm_value; } formData; function struct更新関数(){ // (B) formDataを更新 } function 再描画関数(){ // (A) formDataを使う別クラスを使用 // formDataは未更新なのでバグる } やってみたこと numericUpDown->Changed = Delegate::Combine(struct更新関数, 再描画関数); // 上書き再設定しようとしたが = は使えない どうやら +=(add) と -=(remove) しかないので、(中身を参照できない) 一つずつ array<Delegate^> に吸い出して += で希望順にちまちま再設定も出来そうにありません。 全部の(A)の頭に(B)を追加してイベント経路を一本化すればいいのは分かりますが、 これは大量に書き換えが必要となります。 今現在(B)は後付で全てのフォームを列挙して追加しています。 この部分だけの変更に留められるのならそうしたいのです。 リフレクションも試しましたが、以下でeventInfoは取れますがその先に進めません。 System::Reflection::EventInfo^ eventInfo = (NumericUpDown::typeid)->GetEvent("ValueChanged"); 以上、よろしくお願い致します。
|
- + JavaScript の質問用スレッド vol.118 + [転載禁止]©2ch.net
827 :デフォルトの名無しさん[sage]:2016/02/20(土) 19:26:10.73 ID:HOPxSzsv - ID:jtnfjqEh = ID:7FJRvlZ/ みたいなキチガイがJavaScriptスレには特に多いよな。
病院行った方がいいよマジで。
|
- + JavaScript の質問用スレッド vol.118 + [転載禁止]©2ch.net
830 :デフォルトの名無しさん[sage]:2016/02/20(土) 20:59:19.56 ID:HOPxSzsv - なおキチガイはVBAスレも荒らし中の模様
http://peace.2ch.net/test/read.cgi/tech/1455817784
|