ユーザーがファイルをドロップlistBox
してプロセスに追加し、ドラッグして削除できるシンプルなインターフェイスを構築しようとしています。すべてが正常に機能していますが、機能を 1 つ追加して、もう少し洗練されたものにしたいと思います。
現在、DragLeave
イベントに関連付けられたアイテムの削除があります。つまり、マウスがボックスから離れるとすぐにアイテムが削除されます。しかし、ユーザーが考えを変えられるようにしたいと思います。つまり、間違ったファイルをドラッグしていることに気付いた場合は、マウスを に戻しlistBox
、マウスを放してアクションをキャンセルできるようにしたいと考えています。MouseUp
それは、イベントの代わりにイベントをキャプチャできる必要があることを意味すると考えていDragLeave
ます。しかし、それは今のところ成功していません。
以下は、ドラッグアウトされたファイルを削除するために現在使用しているコードです。ユーザーがマウス ボタンを放すまでファイルがリストから削除されないようにするにはどうすればよいですか?
private void listBox1_MouseDown(object sender, MouseEventArgs e)
{
if (listBox1.Items.Count == 0)
{
return;
}
int index = listBox1.IndexFromPoint(e.X, e.Y);
string s = listBox1.Items[index].ToString();
DragDropEffects dde1 = DoDragDrop(s, DragDropEffects.All);
}
private void listBox1_DragLeave(object sender, EventArgs e)
{
ListBox lb = sender as ListBox;
lb.Items.Remove(lb.SelectedItem);
}
編集 2013/05/16
これまでのコメントと回答は役に立ちましたが、私の質問が十分に明確ではないことに気付きました。この場合、親フォームとは別にダイアログを表示しています。これは基本的にlistBox
. 誰かがファイルをリストからドラッグすると、フォームから完全にドラッグされます。これを行うことで、自分を追い詰めましたか?必要以上に難しくしていることは認識していますが、可能であればどのように機能するかを確認したいと思います.