- PR -

定周期でのASP.NET上のマウスの位置取得方法

1
投稿者投稿内容
yuta
会議室デビュー日: 2005/11/16
投稿数: 13
お住まい・勤務地: 愛知県→静岡県(転勤)
投稿日時: 2005-12-08 23:45

Webアプリ上でWebコントロール上にあるマウスの位置を常に取得するにはどうし
たらよろしいでしょうか?

【目的】
Image上にあるマウスカーソルの位置によってツールチップの内容を動的で変更
したい。

【現状】
WindowsフォームのようにMouseMoveイベントに相当するものがないので現在、
次のように定周期タイマー内でマウスの座標を取得していますが、起動直後に数回
飛んできた後、急にタイマーイベントが飛んでこなくなる。

private void timer1_Tick(object sender, System.Timers.ElapsedEventArgs e) {
 // Image:Webコントロール名です
 string x = Request.Params["Image.x"];
 string y = Request.Params["Image.y"];

 ・・・
}



似たような質問で過去ログの中から、
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=13679&forum=7
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=1909&forum=7
を見つけたのですが、自分の中では解決に至らなかったので今回質問しました。


以上の件よろしくお願いします。

開発環境は.net 2003(ASP.NET+C#)です。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2005-12-09 01:52
引用:
private void timer1_Tick(object sender, System.Timers.ElapsedEventArgs e) {
 // Image:Webコントロール名です
 string x = Request.Params["Image.x"];
 string y = Request.Params["Image.y"];

 ・・・
}

これはサーバー側のプログラムですよね。クライアントに送出されてからは
ポストバックしない限りサーバーのイベントは起きません。
かといってマウスが動くたびにサーバーにポストバックするわけにもいきませんよね。
(起動直後のRequest.Params["Image.x"]って取れてます?)

引用:
【目的】
Image上にあるマウスカーソルの位置によってツールチップの内容を動的で変更
したい。

javascriptでやりましょう。
ツールチップの文字なんて・・と思ったらImage.titleみたいにしてできるようです。
イベントが起きたその要素のx座標はIEならwindow.event.offsetXで取れるようです。

<img id="Image"・・・ onMouseMove="Image.title=window.event.offsetX+':'+window.event.offsetY">
HTML上でこんな感じにすればいいはず。ということでPage_Loadあたりで
Image.Attributes.Add
かなんかでonMouseMove属性をImageに追加してあげてください。

[ メッセージ編集済み 編集者: べる 編集日時 2005-12-09 01:54 ]
yuta
会議室デビュー日: 2005/11/16
投稿数: 13
お住まい・勤務地: 愛知県→静岡県(転勤)
投稿日時: 2005-12-16 13:38

 yutaです。
 連絡が遅れてスミマセン。
 べるさん、レスポンス有難うございます。
 お陰さまでmousemoveイベントを利用して位置は取得できたのですが、
 レス中に記載されているImageはHTMLで追加したものですよね?
 元はWebコントロール上から張りつけたものだったのですがこれではマ
 ウスイベントに伴うツールチップ表示がダメそうなのでHTMLに書き直し
 てみようと思います。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2005-12-16 23:49
引用:
レス中に記載されているImageはHTMLで追加したものですよね?

一応WebControlのつもりでした。
引用:
元はWebコントロール上から張りつけたものだったのですがこれではマ
 ウスイベントに伴うツールチップ表示がダメそうなのでHTMLに書き直し
 てみようと思います。

WebコントロールのImageはクライアントに送出されると<img>タグになりますよね。
普通はWebコントロールのIDが<img id="〜">のようにidになるので大丈夫だと思います。

引用:
HTML上でこんな感じにすればいいはず

これはHTMLエディタで、ということではなく、クライアントに送出されたときに
こうなればいい、という意味のつもりでした。
1

スキルアップ/キャリアアップ(JOB@IT)