tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 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)

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。