C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 102 を表示中)
■60851 / )  ListBoxのIndexFromPointについて
□投稿者/ やんまー (70回)-(2011/07/21(Thu) 10:56:42)

分類:[VB.NET/VB2005 以降] 

ListboxにD&Dする際に、
すでに要素がある場合には挿入するようにしたいです。

そこで、
http://hpcgi1.nifty.com/MADIA/vbnet/wwwlng.cgi?print+200812/08120014.txt
を参考にしまして、

ListBox1.IndexFromPoint(ListBox1.PointToClient(MousePosition))
の値が-1だったらadd、それ以外だったらInsertとしました。

If Index = -1 Then
ListBox1.Items.Add(要素)
Else
ListBox1.Items.Insert(要素)
End If


このやり方で通常の文字列型のListboxでは全く問題なかったのですが、
DrawItemで画像をListboxに表示している際に問題が発生しました。

試しに、マウスダウンイベントでマウス位置のインデックスがいくつと判定されるか調べてみたのですが、困りました。

まず要素がないとき
Stringの時・・・-1
画像の時・・・65535

となります。この場合は65535と置き換えればよかったのですが、

要素がすでにある場合、追加された要素の下側を調べると
Stringの時・・・-1
画像の時・・・インデックスの最大値

となってしまいます。
画像の時は例えば要素が2つの時
2つ目の要素を選択した場合も、その下の空白部分を選択(クリック)した場合も
「1」となってしまいます。
これでは末尾にaddさせることができません・・・。

リストボックスの挙動を見ると
下の空白部分をクリックした場合、
stringの場合は選択されませんが、画像の時は選択されてしまう、という違いがありました。

どうやったら末尾に追加できるのでしょうか・・・

返信 編集キー/


管理者用

- Child Tree -