• ベストアンサー

イベントハンドラ関数について

現在VC++/CLR 2005 でプログラミングをしています。 基本的な事柄かもしれませんが、質問させてください  以下の2つのボタンのイベントハンドラ関数があった場合 //ボタン1のイベントハンドラ関数 private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) String^ str = textBox1->Text } //ボタン2のイベントハンドラ関数 private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) { } ボタン2をクリックしたときの動作とボタン1の動作を同じにしたいと思っています。 その場合は private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) String^ str = textBox1->Text } //ボタン2のイベントハンドラ関数 private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) { String^ str = textBox1->Text } のようにボタン2のイベントハンドラ関数をボタン1と同じように書けばいいのですが イベントハンドラ関数の処理が膨大になった場合を考えて省略する 書き方は無いのでしょうか?(以下の場合ですとエラーが起こってしまいます。) private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) { button1_Click(); } 宜しくお願いします

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.3

button1_Click()を直接呼ぶよりPreformClickメソッドを使うほうがいいかも知れません ... button1->PerformClick(); といった具合に呼び出しましょうと MSDNでは推奨しているようですよ

smis
質問者

お礼

貴重なアドバイス有難うございます。 このような簡潔な方法があるとは知りませんでした。 是非活用させていただきます

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • ape5
  • ベストアンサー率57% (85/148)
回答No.2

private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) { button1_Click(sender,e); } これで呼べませんか?もしかして違うクラスにあるとかかな? でも、同じのがいっぱいあるなら、デリゲートとか使うのもいいのかもしれません。

smis
質問者

お礼

無事動きました。 貴重なアドバイスありがとうざいます

すると、全ての回答が全文表示されます。
  • nekokone
  • ベストアンサー率29% (9/31)
回答No.1

button2_Clickイベントハンドラは引数としてイベントの送信元のオブジェクト(Object sender)と、イベントに関連するイベント情報(EventArgs e)を要求するのでそれを渡してやることでbutton1_Clickを流用することもできます。 例を書くと private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) { button1_Click(sender, e); } のようになると思います。 私はC++/CLIを使ったことはなく、C#で.NETを使っているのですが、同じ方法(構文の一部は違いますが)で動かせると思います。

smis
質問者

お礼

無事動きました。 私もC++/CLIは非常にC#と似通ってる部分があるので C#のWEBサイトを見てプログラミングしております。 System::Object^ sender, System::EventArgs^ e の仕組みが分かりました。 貴重なアドバイスありがとうございます。

すると、全ての回答が全文表示されます。
このQ&Aのポイント
  • フットコントローラーの反応が悪いため、古い機種でも交換したい方におすすめの機種をご紹介します。
  • フットコントローラーの反応が悪い場合、交換が必要な場合があります。古い機種でも使える交換可能な機種をご紹介します。
  • フットコントローラーの反応が悪い問題は古い機種でも発生することがあります。その場合は対応表にないものでも使える機種があるのでおすすめです。
回答を見る

専門家に質問してみよう