tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルクリックを検知する方法
記事No3995
投稿日: 2006/07/17(Mon) 14:57
投稿者
こんにちは
お聞きしたいことがあります。
イベント(例えばPictureboxのMouseDownイベント)から
ほかのコントロール(例えばMenuItem)のクリックなどを検知する方法ってありますか?
あれば教えてください。お願いします。

[ツリー表示へ]
タイトルRe: クリックを検知する方法
記事No3996
投稿日: 2006/07/17(Mon) 15:29
投稿者なおこ(・∀・)
お世話になります。

> イベント(例えばPictureboxのMouseDownイベント)から
> ほかのコントロール(例えばMenuItem)のクリックなどを検知する方法ってありますか?

MenuItem の Click イベントでやればいいのでは?

[ツリー表示へ]
タイトルRe^2: クリックを検知する方法
記事No3997
投稿日: 2006/07/17(Mon) 19:18
投稿者
なおこ(・∀・)さんすみません僕が詳しく書かなかったので、ここでちょっと詳しく書かせていただきます。
なんで、わざわざPictureboxのMouseDownイベントからほかのコントロールのクリックなどを検知する方法
というのを聞いたのは、コントロールのイベント(MouseDownやClick)で実行したいと思うことができないからです。
ぼくはこのコントロール(コンテキストのMenuItem)のクリックされた座標を取得し、
クリップボードの文字列をその座標に描画したいと考えました。
でも、MenuItemのMouseDownでは描画はできるのに位置がクリックしたときの位置とまったく会わないのです。
PointToScreenを使ったりいろいろ試したのに、クリックした位置と描画される位置が合いません。
同じ書き方をしているpictureboxのMouseDownでは正しい位置にできるので、僕は、
Private Sub PictureBox1_MouseDown((省略))handles Picturebox1.MouseDown
if (ここにMenuItemのクリックを検知するコード)Then
      (クリップボードの内容を画像に描画するコード(省略))
endif
End Sub
というようなコードにしたいのです。
おわかりいただけたでしょうか???

[ツリー表示へ]
タイトル追記
記事No3998
投稿日: 2006/07/17(Mon) 19:29
投稿者
すみません質問を聞いているときにもうひとつ気になることが出てきたのでちょっと書きます。
自分の作ったソフトを拡張子に関連付けを自動で行う場合どうしたらいいんでしょうか?
一度に複数質問をぶつけてしまいすみません。

[ツリー表示へ]
タイトルRe: 追記
記事No4002
投稿日: 2006/07/17(Mon) 21:07
投稿者YAS
> すみません質問を聞いているときにもうひとつ気になることが出てきたのでちょっと書きます。
> 自分の作ったソフトを拡張子に関連付けを自動で行う場合どうしたらいいんでしょうか?

これはインストーラーで指定することでは?

(VB.NETのコードでもできそうですが,最初に起動するまで関連付けされないのも変ですし。)

[ツリー表示へ]
タイトルRe^3: クリックを検知する方法
記事No4001
投稿日: 2006/07/17(Mon) 21:02
投稿者YAS
次のようにすれば,「今」マウスがPictureBox1の上のどこにあるか取得することができます。
MenuItemがクリックされたときにマウスがPictureBox1の上のどこにあるのかもわかります。

Dim p As Point = Me.PictureBox1.PointToClient(Control.MousePosition)

また,別のコントロールの座標も,PointToScreenで変換した後,PointToClientで
変換すれば好きなコントロールの座標に読み替えることができます。

[ツリー表示へ]
タイトルありがとうございました。
記事No4007
投稿日: 2006/07/18(Tue) 17:29
投稿者
ありがとうございました。
このコードだったらできると思います。
拡張子の関連付けのほうもありがとうございました。

[ツリー表示へ]