→ http://fuunyan.blogspot.jp/2012/09/blog.html
たとえば DateTimePicker を使用して期間を指定できるデザインの画面の場合・・・
2種類あったら合計4イベント書くことになるけど、これを使えば1つのイベントを使いまわせる。
System::Void DateValueChanged(System::Object^ sender, System::EventArgs^ e)
{
System::Windows::Forms::DateTimePicker^ dtWork;
System::Windows::Forms::DateTimePicker^ dtFrom;
System::Windows::Forms::DateTimePicker^ dtTo;
dtWork = safe_cast(sender);
// 呼び出し元のコンポーネントを判断し、処理対象となるコンポーネントを選定する
if((dtWork->Name == Date1From->Name) || (dtWork->Name == Date1To->Name))
{
dtFrom = Date1From;
dtTo = Date1To;
}
if((dtWork->Name == Date2From->Name) || (dtWork->Name == Date2To->Name))
{
dtFrom = Date2From;
dtTo = Date2To;
}
// ・From, To 共に有効な場合 From < To となるように入力後にデータ確認を行う。
// ・どちらか片方のみ有効の場合は入力制約を設けない。
// ・片側入力から両側入力になった場合、後から有効になったコンポーネントの指定日付を
// 先に有効であったコンポーネントの指定日付と合わせる。
if((dtFrom->Checked && dtTo->Checked) && (dtFrom->Value > dtTo->Value))
if(dtWork->Name == dtFrom->Name)
dtFrom->Value = dtTo->Value;
else
dtTo->Value = dtFrom->Value;
}