Usare il drag-and-drop in C#
Oggi vediamo come impostare il drag-and-drop dentro a Windows Form usando C#.
Prima di tutto, dentro al form, aggiungete un oggetto Label.
Ci servirà per visualizzare i files che trasciniamo nella finestra.
A questo punto dobbiamo impostare tre eventi:
- load del form
- drag
- drop
In sostanza la nostra classe diventa così:
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
this.AllowDrop = true;
}
private void Form1_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
e.Effect = DragDropEffects.Copy;
}
else
{
e.Effect = DragDropEffects.None;
}
}
private void Form1_DragDrop(object sender, DragEventArgs e)
{
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop, false);
foreach (string f in files)
{
this.label1.Text += f + "n";
}
}
}
}
In questo caso, gli eventi, li ho creati direttamente dall'IDE.
Se invece li vogliamo scrivere a mano, dobbiamo anche registrarli aggiungendo queste due righe:
this.DragEnter += new DragEventHandler(Form1_DragEnter);
this.DragDrop += new DragEventHandler(Form1_DragDrop);
Quindi la classe diventa così:
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
this.AllowDrop = true;
this.DragEnter += new DragEventHandler(Form1_DragEnter);
this.DragDrop += new DragEventHandler(Form1_DragDrop);
}
private void Form1_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
e.Effect = DragDropEffects.Copy;
}
else
{
e.Effect = DragDropEffects.None;
}
}
private void Form1_DragDrop(object sender, DragEventArgs e)
{
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop, false);
foreach (string f in files)
{
this.label1.Text += f + "n";
}
}
}
}
Se impostate gli eventi nell'IDE, e lasciate anche quelle due righe, gli eventi verranno doppiati.
Quindi in sostanza, ogni file che aggiungete verrà visualizzato due volte.
Grazie al forum di HTML.it per la dritta.
Enjoy!
c# label windows windows form
Commentami!