タイトル : Re^3: 透過したラベルのイベントをとりたい 投稿日 : 2012/05/17(Thu) 13:22 投稿者 : 魔界の仮面弁士
> 説明がわかりずらいかもしれませんが Label だったり label だったり Label1 だったり label1 だったりと 表現が揺れすぎていて、正直、どれがどれだか分からないです。 > Label.Parent = Label1 > Label.BackColor = Color.Transparent > としてましてlabelのマウスイベントが発生しません。 Label と label の違いが分からないので質問文を読みかえますが、上記は | Label0.Parent = Label1 | Label0.BackColor = Color.Transparent | としてまして Label0 のマウスイベントが発生しません。 という意味でしょうか? それとも、 | Label0.Parent = Label1 | Label0.BackColor = Color.Transparent | としてまして Label1 のマウスイベントが発生しません。 の意味でしょうか。あるいは、 | Label0.Parent = Label1 | Label0.BackColor = Color.Transparent | としてまして、ラベル(Label0 と Label1)のマウスイベントが発生しません。 という意味でしょうか? > 再度お願いします。 再度同じことを書きますが、Color.Transparent を指定しようとしまいと、 マウス系イベントの動作には影響しません。 また、背景透過のために Parent で親子関係にしてあるようですが、 それぞれのラベルが親子関係だろうと、重ねて配置してあるだけの場合であろうと、 MouseMove が通知されるのは、あくまでも一番手前のラベルということです。 http://www.vb-user.net/junk/replySamples/2012.05.17.12.46/VBrescue_net10808.png たとえ「奥(下に敷かれているコントロール)」がイベントを受け取れずとも、 「手前(上に載せてあるコントロール)」はイベントを受けとれるはずです。 どちらか一方でもマウス操作を検出できれば、あとはマウス座標を調べることで 処理対象のコントロールを割り出すことは可能かと思いますよ。 > Labelの下にはlabel1からlabel40までコントロールがあり ラベルを重ねて配置しているのではなく、Parent で親子関係を持たせているのですよね。 ここでいう 上/下 という表現は、画面の奥側と手前側、どちらを指していますか? 今回の質問文から、私は ・[Label] の上に label1〜label40 を載せてあるのではなく、 [Label] の下に label1〜label40 を敷いてある。 ・イベントが取れないのは(label1〜label40ではなく)、[Label] の方である。 と読み取ったのですが、どうにも状況を想像できずにいます。 最初(No.10808)の質問を見たときには、 Form1 ┗[Label] (親) ┣label1 (子1) ┣label2 (子2) : : ┗labelX (子X) のような関係を想像しましたが、今回(No.10810)の質問文からは、 親子関係が逆であるように読み取れたため、下記のような画面を 想像したのですが――これもなんだか違いそうですね。 Form1 ┣label1 (親1) ┃┣[Label] (1-1) ┃┣[Label] (1-2) : : ┃┗[Label] (1-n) ┃ ┣label2 (親2) ┃┣[Label] (2-1) ┃┣[Label] (2-2) : : ┃┗[Label] (2-n) : ┗label40(親40) ┣[Label] (40-1) ┣[Label] (40-2) : ┗[Label] (40-n) |