これは簡単なプロセスですか?
私は、内部ツール用の簡単なハックUIのみを作成しています。
年齢をかけたくないです。
これは、簡単で汚れたアプリです。基本的に、ボタンとListBoxを持つフォームを作成しました。ボタンをクリックすると、ListBoxに次の20日間の日付が入力されます(テストのためだけに使用する必要があります)。次に、ListBox内でドラッグアンドドロップして並べ替えることができます。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.listBox1.AllowDrop = true;
}
private void button1_Click(object sender, EventArgs e)
{
for (int i = 0; i <= 20; i++)
{
this.listBox1.Items.Add(DateTime.Now.AddDays(i));
}
}
private void listBox1_MouseDown(object sender, MouseEventArgs e)
{
if (this.listBox1.SelectedItem == null) return;
this.listBox1.DoDragDrop(this.listBox1.SelectedItem, DragDropEffects.Move);
}
private void listBox1_DragOver(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Move;
}
private void listBox1_DragDrop(object sender, DragEventArgs e)
{
Point point = listBox1.PointToClient(new Point(e.X, e.Y));
int index = this.listBox1.IndexFromPoint(point);
if (index < 0) index = this.listBox1.Items.Count-1;
object data = e.Data.GetData(typeof(DateTime));
this.listBox1.Items.Remove(data);
this.listBox1.Items.Insert(index, data);
}
7年後期。しかし、初めての人のために、ここにコードがあります。
private void listBox1_MouseDown(object sender, MouseEventArgs e)
{
if (this.listBox1.SelectedItem == null) return;
this.listBox1.DoDragDrop(this.listBox1.SelectedItem, DragDropEffects.Move);
}
private void listBox1_DragOver(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Move;
}
private void listBox1_DragDrop(object sender, DragEventArgs e)
{
Point point = listBox1.PointToClient(new Point(e.X, e.Y));
int index = this.listBox1.IndexFromPoint(point);
if (index < 0) index = this.listBox1.Items.Count - 1;
object data = listBox1.SelectedItem;
this.listBox1.Items.Remove(data);
this.listBox1.Items.Insert(index, data);
}
private void itemcreator_Load(object sender, EventArgs e)
{
this.listBox1.AllowDrop = true;
}
ドラッグアンドドロップを一度も実装したことがなく、正しく実行してドキュメントを読む必要がある場合、最初は数時間かかります。特に、ユーザーが操作をキャンセルした場合の即時のフィードバックとリストの復元には、いくつかの考慮が必要です。動作を再利用可能なユーザーコントロールにカプセル化するのにも時間がかかります。
ドラッグアンドドロップをまったく行ったことがない場合は、MSDNの ドラッグアンドドロップの例 をご覧ください。これは良い出発点となるでしょう、そしてそれがうまくいくのに多分半日かかるはずです。
別の方法としては、エクスプローラーがフォルダーの内容を表示するために使用するコントロールである list-view コントロールを使用します。より複雑ですが、アイテムのドラッグを実装します。