[英]Drag and Drop not working in C# Winforms Application
我正在嘗試創建一個窗口表單,我可以刪除文件/文件夾。
我在WinForms應用程序中有以下代碼
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_DragEnter(object sender, DragEventArgs e)
{
Debug.Print("DragEnter");
}
private void Form1_DragDrop(object sender, DragEventArgs e)
{
MessageBox.Show("Dropped!");
}
}
我已將AllowDrop屬性設置為true。 我已經嘗試在Visual Studio中的調試中運行該應用程序。 基於其他類似問題的答案,我嘗試以管理員身份運行已編譯的exe。 我已經嘗試不以管理員身份運行已編譯的exe。
但無論我做什么,我都無法觸發DragDrop事件。 但是,DragEnter事件會觸發。 我錯過了什么?
你的DragDropEffect
設置得恰當嗎? 嘗試將其放在DragEnter事件處理程序方法中:
private void Form1_DragEnter(object sender, DragEventArgs e)
{
Console.WriteLine("DragEnter!");
e.Effect = DragDropEffects.Copy;
}
默認情況下,它設置為DragDropEffects.None
因此Drop事件不會觸發。
對於那些讀這個的人,因為上面的提示不起作用。
請注意,如果您按照此處的報告運行Visual Studio或您的應用程序“以管理員身份”,則拖放將無效: https : //visualstudio.uservoice.com/forums/121579-visual-studio-ide/suggestions/2164233-fix-drag -and拖放到開放文件時運行的-AS-ADM
嘗試在Form1_DragEnter中使用這樣的東西:
private void Form1_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
e.Effect = DragDropEffects.All;
else
{
String[] strGetFormats = e.Data.GetFormats();
e.Effect = DragDropEffects.None;
}
}
這會觸發你的Form1_DragDrop
不要忘記在表單的屬性中將AllowDrop更改為“True”您的代碼可能沒問題,但如果此屬性未啟用為true,則無效。 默認設置為false。
您是否編寫了要拖動的對象的MouseDown和MouseMove事件。
另一個非常討厭和棘手的問題可能是你已經覆蓋了OnHandleCreated
,但忘了調用基礎實現。 然后,您的應用程序無法設置所需的內部窗口設置以遵守AllowDrop
屬性。
例如,確保在你的覆蓋中調用base.OnHandleCreated(e)
,你會沒事的。
盡管將AllowDrop設置為true,但我也遇到了這個令人困惑的問題!
在我的Windows窗體應用程序(VS2017)中,我必須確保設置了一個有效的Startup對象:例如myprojectname.Program,一切都很好!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.