• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C# のクリックイベント)

C#のクリックイベントで別のコントロールをクリックする方法

このQ&Aのポイント
  • C#のクリックイベントで他のコントロールをクリックさせるには、`PerformClick()`メソッドを使用します。
  • ただし、ピクチャーボックスの場合、`PerformClick()`メソッドを直接使用することはできません。エラーメッセージが出るため、別の方法を探す必要があります。
  • ピクチャーボックスのボタンクリックイベントを発生させるには、他のイベントハンドラーを介して操作する必要があります。

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

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

残念ながら無理。 PerformClick()メソッドはSystem.Windows.Forms.Buttonクラスの持ち物で、System.Windows.Forms.PictureBoxクラスにはそれに相当するものがない。 英語のQAサイトを漁っても、「直接pictureBox1_Click(this.pictureBox1, null);を呼べとかそんな風にしか書かれていない。 と、まぁここまでだったらあなたをがっかりさせる普通の何の解決にもなってない回答だ。恐らくあなたがインターネットを検索して得た情報と何も変わりはすまい。 PictureBoxにPerformClick()が無いなら追加すればいいじゃない! by まりーあんもちねっと といっても、System.Windows.Forms.PictureBoxクラスを書き換えるわけではないし使う側も面倒な手順を踏む必要がある。 プロジェクトを右クリックして追加→新しい項目でカスタムコントロールを選ぶ。ファイル名はClickablePictureBox.csとしようか。 で、そうするとControl(System.Windows.Forms.Control)から派生したクラスが自動的にできるのだが、これをSystem.Windows.Forms.PictureBoxに書き換える。 とりあえずさくっとサンプルコードを示す。サンプルでは名前空間をWindowsFormsApplication1にしてるけどお好きなものをどうぞ。 namespace WindowsFormsApplication1 {  public partial class ClickablePictureBox : System.Windows.Forms.PictureBox {   public ClickablePictureBox() {    InitializeComponent();   }   public void PerformClick() {    this.OnClick(new EventArgs());   }  } } これで、PerformClick()というメソッドが追加されてかつそれがClickイベントを引き起こす以外は全てPictureBoxと同じ振る舞いを行うコントロールを使う事が出来るようになる。 で、使う側もSystem.Windows.Forms.PictureBoxの変わりにWindowsFormsApplication1.ClickablePictureBoxを使う。 そうすると、それ以外にあなたのプログラムは何一つ変える事無くあなたのやりたい事が実現できるぜ。 あ、これは.Net 2.0相当の普通のWindows Formアプリケーションを想定してます。まぁWPFにはPictureBox自体無いので大丈夫だと思うけど。

satisfied999
質問者

お礼

すごい☆ こんなこともできるのですね!勉強になりました。

関連するQ&A

専門家に質問してみよう