- PR -

ListBox上の座標により適切なアイテムを選択する方法

投稿者投稿内容
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-02-20 12:03
引用:

minminnanaさんの書き込み (2006-02-20 11:55) より:

DragOverイベントでは駄目ですか?


できますね... orz

引用:

DragOver イベント:

マウス ポインタでアイテムをドラッグし、コントロールのクライアント領域外に移動したときに発生します。


この説明を見て、初回だけかと思ってました... orz

# DragAndDrop はやったことないとはいえ、こんな初歩的なことで... (鬱

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2006-02-20 12:05
諸農です。

状況的にはDragOverが適していると思います。

コード:
private void Form1_Load(object sender, System.EventArgs e)
{
    for(int i = 0;i<10;i++)
        listBox1.Items.Add(string.Format("アイテム={0}",i));
    for(int i = 0;i<10;i++)
        listBox2.Items.Add(string.Format("アイテム={0}",i));
    listBox2.AllowDrop = true;
}

private void listBox1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
    if ((e.Button == MouseButtons.Left) && (listBox1.SelectedItem != null))
    {
        int idx = listBox1.IndexFromPoint(listBox1.PointToClient(new Point(e.X,e.Y)));
        string str = (string)listBox1.Items[listBox1.SelectedIndex];
        listBox1.DoDragDrop(str,DragDropEffects.Copy);
    }
}

private void listBox2_DragOver(object sender, System.Windows.Forms.DragEventArgs e)
{
    int idx = listBox2.IndexFromPoint(listBox2.PointToClient(new Point(e.X,e.Y)));
    string source = (string)e.Data.GetData("System.String");
    string target = (string)listBox2.Items[idx];
    e.Effect = (string.Compare(source,target) == 0)?DragDropEffects.Copy:DragDropEffects.None;
}




_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
DH
会議室デビュー日: 2005/03/05
投稿数: 15
投稿日時: 2006-02-20 17:14
minminnanaさん、Jubeiさん、お答え頂きありがとうございます。
じゃんぬねっとさん、引き続きお答え頂いてありがとうございます。

DragOverイベントとは・・・、自分もじゃんぬねっとさんと同じく初回のみしか
発生しないイベントだと勘違いしておりました。

Jubeiさん、適切なコードまで書いて頂き本当にありがとうございます。
大変参考になります。
今現在他の作業をしておりまして実装はしていないのですが出来ましたら
報告致します。

DH
会議室デビュー日: 2005/03/05
投稿数: 15
投稿日時: 2006-02-27 13:18
返事が遅くなり申し訳ありません。
皆さんのご指摘どおりDorp先のDragOverイベントで見事実装することが
できました。
お答え頂いた皆さん、どうもありがとうございました。
今後ともどうぞ宜しくお願い致します。

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