• ベストアンサー

マウス座標からリストボックスのリストインデックスを知る方法

リストボックスをドラッグアンドドロップのドロップ先とするプログラムを作成しているのですが、どのリストボックス項目にドロップされたかを知る方法を教えてください。 ドロップ時にはマウス座標が渡されるのですが、この座標からリストインデックスをどのようにして求めたらよいか分からずにいます。 対象としているプログラムは、フォントサイズもリストボックスのサイズも固定ですので、以下のようなコーディングでしのげていますが、フォントサイズやリストボックスサイズが実行時に変えられても対応できるような、もっとスマートな方法はないでしょうか? リストインデックス = リストボックス.TopIndex + マウスY座標 \ リストボックスの項目の高さ(9ptフォントで180ぐらい?)

  • akym2
  • お礼率57% (4/7)

質問者が選んだベストアンサー

  • ベストアンサー
  • todo36
  • ベストアンサー率58% (728/1234)
回答No.2

リストボックスの項目の高さ =Screen.TwipsPerPixelY * _ SendMessage(List1.hwnd, LB_GETITEMHEIGHT, 0, vbNullString) 参考URLのdraglist?.zipにサンプルがあります

参考URL:
http://www.vb-helper.com/HowTo/ 
akym2
質問者

お礼

ありがとうございます。 ご紹介いただいたURLは英語なのが多少つらいですが、色々参考になりそうです。 紹介いただいたURLはzipファイルの一覧でしたので、以下のURLを"お気に入り"に追加しました。 http://www.vb-helper.com/howto.htm

その他の回答 (1)

回答No.1

参考URLが答になっていると思います。 WindowsAPIを使ったりして、あまりスマートとは思いませんが…

参考URL:
http://www.microsoft.com/japan/support/kb/articles/J042/4/50.htm
akym2
質問者

お礼

ありがとうございます。 Knowledge Base…基本ですね。 最初から検索すべきでした。

関連するQ&A

  • ドラッグ&ドロップによる項目移動

    ドラッグ&ドロップによる項目の移動が出来るかどうかを教えて頂きたいです。 また出来るのであればやり方(参考サイト等)教えて下さい>< 検索してもドラッグ&ドロップでファイルパスの取得とかしか出ないので困っています>< ・リストボックスを2つ配置して選択している項目を2つのリストボックス間で移動したいです。 (1)リストボックス1の項目を選択 (2)リストボックス2へドラッグ&ドロップ (3)リストボックス1では選択されていた項目を削除、リストボックス2へは項目を追加 ・DataGridViewなどのテーブル表示の列の入れ替え Windowsのフォルダで「名前、更新日時、種類、サイズ、...」と並んでいる項目をマウス操作で入れ替えなど出来ますよね?あんな事も出来たりしませんかね? 「マウスでのドラッグ&ドロップで操作する」がポイントです よろしくお願いします。

  • プログラムでマウスを指定した座標に移動させる方法

    環境 windows xp jdk 1.6 awt.Panelクラス上でマウスイベントを取得しています。 マウスが特定の領域にきた場合、プログラムで強制的に、指定した別の座標(Javaアプリ上の座標)にマウスを移動する事は、可能でしょうか? 可能な場合どのようにコーディングすればよろしいでしょうか? ご教示よろしくお願いいたします。

    • ベストアンサー
    • Java
  • 拡大するとマウスのローカル座標が変わってしまう

    ある四角形の左上から見たマウスの座標を取得したいと考えています。 四角形は移動したり回転させるので、ローカル座標を利用しようと思い、 次のコードを書きました。 mc_box.width = mc_box.width * 2; stage.addEventListener(MouseEvent.MOUSE_MOVE, function(){ mc_label.text = mc_box.mouseX.toString(); }); 一行目でmc_boxのサイズを拡大すると、表示されるmc_box.mouseXは 実際の半分のサイズになってしまいます。 回転させても四角形の左上隅が(0,0)になるようにしたいです。 どうすれば正しくマウスの座標を得られるのでしょうか?

    • ベストアンサー
    • Flash
  • Excelリストボックスについて

    ExcelVBAのリストボックスで質問!! (1)列に項目名称をつけたいのですが、どうすればよいでしょうか? ちなみにリストの値は別ファイルかVBAにくみこみたいと思っています。 (2)ホイール(マウス)によるスクロールは行えないのでしょうか?方法があれば教えてください。

  • コンボボックスのドロップダウンリストが表示されない

    MFCでアプリを作成、アプリの画面上にコンボボックスのリソースを貼り付け、アプリ起動直後は、コンボボックスのドロップダウンリストを表示できています。 しかし、アプリ画面のサイズを変更すると、▼ボタンを押下しても、ドロップダウンリストが表示されなくなってしまいます。 アプリ画面のサイズを変更後も、コンボボックスのドロップダウンリストを表示できるようにする方法を教えてください。

  • ドロップダウンリストの文字サイズを大きくする方法は

    Excel2003です。 表組みを作成したらシートの倍率が50%にしないと全表組み表示できなくなりました。 表外に図のようなドロップダウン機能を入力規則を使って作ったのですが、 A2,B2のセルでは20ポイントのフォントサイズで読みやすくなったのですが、 肝心のドロップダウンリストが小さすぎて読めません。 ドロップダウンリストのフォントサイズを大きくする方法はあるのでしょうか? ご存知の方、よろしくお願いします。

  • ピクチャボックスから座標を読み込み 配列へ

    プログラミング初心者でわからないことがあるのでどなたかわかるかたいましたら教えてください<(_ _)> ピクチャボックスにグラフを書くプログラムを作っているのですが、 波状のグラフから その最大値、最小値をいくつかとり、それらについて近似直線を書こうとしています。 その際に、範囲指定をマウスで行うか、もしくはピクチャボックス上をクリックするとその座標を読み込み配列に入れたいのです。 例えばc(600)の配列に クリックしたら順次その座標データ(X座標だけでかまわないです)が入るようにするにはどうしたらいいでしょうか? 具体的には1回クリックしたらc(0)へ、2回目はc(1)へ・・・・ とこれを繰り返し操作できるようにしたいのです ぐぐってみましたが、座標を読み込みはありますが、それを活用するというものがなかなかなくて。 わかる方いましたらお願いします。

  • ExcelVBAのリストボックスで項目表示とホイールスクロールをさせたい

    ExcelVBAでリストボックスの列に項目名称をつけたいのですが、どうすればよいでしょうか? ちなみにリストの値は別ファイルかVBAにくみこみたいと思っています。 また、同じくリストボックスでホイール(マウス)によるスクロールは行えないのでしょうか?方法があれば教えてください。

  • コンボボックスでドロップダウンリストにしたときに・・・・

    コンボボックスでドロップダウンリストにしてから実行をすると、最初の項目(一番上)が空白で、その下はリストに書かれてあるように表示されてます。 ドロップダウンしなくても見れるようにするにはどうしたらいのですか? 例: 野菜 ▽    ←ここを表示させたい    みかん    かぼちゃ    りんご    バナナ

  • accessでのリストボックス選択のイベント

    お世話になります。 度々で恐縮なのですが、以下の質問を よろしくお願いいたします。 accessのフォーム上にリストボックスとテキスト ボックスをはりつけ、リストボックスに表示されて いる行が選択されたら、その項目値をテキスト ボックスに表示させようとしています。 しかし、リストボックスのイベント(マウスボタン クリック時や開放時)を使ってみたのですが、 二度クリックしないとテキストボックスに表示され ません。 リストボックスの行が選択されたというイベントが あればいいのですが、見当たりません。 どうすれば、リストボックスで行が選択されたという イベントを捕まえることができるのかご教示お願い いたします。

専門家に質問してみよう