我有一個WinForms應用程式,我允許用戶將影像拖放到一個面板上。目前,他們需要同時拖放兩個檔案來添加它們。如果他們拖放了一個檔案,然后又想添加另一個,那么它就會覆寫第一個檔案。
我想讓他們一次放下一個檔案,并在不覆寫它們的情況下添加他們想要的檔案。
private void Panel1_DragEnter(object sender, DragEventArgs e)。
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
e.Effect = DragDropEffects.Copy。
}
string[] files;
private void Panel1_DragDrop(object sender, DragEventArgs e)。
{
files = (string[])e.Data.GetData(DataFormats.FileDrop)。
foreach (string file in files)
{
Console.WriteLine(files.Length)。
}
}
uj5u.com熱心網友回復:
它不作業的原因是,每次DragDrop被提出時,你都會丟棄files中的任何東西。你應該使用List<string>(或HashSet<string>來忽略重復的內容),而不是使用一個陣列。
這里有一個例子:
List<string> files = new List<string>()。
private void Panel1_DragDrop(object sender, DragEventArgs e)。
{
files.AddRange((string[])e.Data.GetData(DataFormats.FileDrop))。
Console.WriteLine(files.Count)。
}
或者用HashSet:
HashSet<string> files = new HashSet<string>()。
private void Panel1_DragDrop(object sender, DragEventArgs e)。
{
files.UnionWith((string[])e.Data.GetData(DataFormats.FileDrop))。
Console.WriteLine(files.Count)。
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/309682.html
標籤:
上一篇:關閉按鈕c#Windows表單
