トップページ > プログラム > 2016年02月20日 > HOPxSzsv

書き込み順位&時間帯一覧

17 位/236 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000000000310004



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
くだすれC++/CLI(初心者用)part2
+ JavaScript の質問用スレッド vol.118 + [転載禁止]©2ch.net

書き込みレス一覧

くだすれ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


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。