質問: ### 前提・実現したいこと PictureBoxの上に透明なラベルを貼り、ラベルがクリックされたらイベントを発生させたいです。 PictureBoxにはアイコンのような画像がいくつかあり、そのアイコンを押すと画面が遷移するように見せかけたくて透明なラベルをアイコンの上に置いて、OnClickでイベントを発生させようとしました。 ### 発生している問題・エラーメッセージ まず最初にLabelのプロパティのBackColorをTransparentに設定して見ましたが、透過しませんでした。 調べてみるとPictureBoxの子コントロールに設定する必要があるとのことでしたのでそれを試したところラベルは透過しました。 ``` this.pictureBox2.Controls.Add(label1); ``` ただ、そうすると今度はおそらく子コントロールに設定したせいでラベルのクリックイベントが発生しなくなってしまいました。 どうすればうまく実装できるでしょうか? ### 補足情報(FW/ツールのバージョンなど) Windows C#7.0 VisualStudio2017
回答: Labelを使用する形ではありませんが、下記の方法はどうでしょう? PictureBoxのクリックイベントにて、クリックされた座標がアイコンが表示されている領域内であれば、アイコンクリックイベントを起こす ``` public event EventHandler IconClick; private void pictureBox1_MouseClick(object sender, MouseEventArgs e) { // アイコンの表示されている領域 Rectangle Icon1 = new Rectangle(10, 10, 64, 64); // クリックされた座標が領域内か判断する if(Icon1.Contains(e.Location)) { // クリックイベントを起こす IconClick(this, EventArgs.Empty); } } ``` みたいな感じで