2012-01-08 102 views
4

我對此感到困惑。我試圖在DataGridView上執行拖放操作。沒有看到任何事件發生,我用一個文本框嘗試了一個簡單的表單。C#WinForms DragEnter永遠不會觸發

我想能夠從Windows資源管理器中拖動文件或文件夾。

我錯過了一些東西,因爲這些事件永遠不會發生。我沒有讀到DragEvents, Windows 7 and UIPI,但我仍然無法解決這個問題。

我出來的想法,我歡迎您的建議。

public Form1() 
{ 
    InitializeComponent(); 
    this.AllowDrop = true; 
    textBox1.AllowDrop = true; 
    textBox1.DragEnter += new DragEventHandler(textBox1_DragEnter); 
    textBox1.DragDrop += new DragEventHandler(textBox1_DragDrop); 
    textBox1.DragOver += new DragEventHandler(textBox1_DragOver); 
} 

void textBox1_DragOver(object sender, DragEventArgs e) 
{ 
    e.Effect = DragDropEffects.Move; 
} 

void textBox1_DragDrop(object sender, DragEventArgs e) 
{ 
    e.Effect = DragDropEffects.Move; 
} 

void textBox1_DragEnter(object sender, DragEventArgs e) 
{ 
    e.Effect = DragDropEffects.Move; 
} 

看來,這應該工作。我在WP7 64上進行了全新安裝 - 包括所有更新,我沒有運行病毒或惡意軟件保護,或者任何可以阻止這些事件觸發的信息(據我所知)。

+1

您試圖從應用程序拖動到另一個應用程序? – 2012-01-08 10:38:41

+0

表單的DragEnter事件處理程序不會觸發,您沒有訂閱該事件。沒有明顯的原因爲什麼文本框'事件不會觸發。在其上設置一個斷點並將文件從Windows資源管理器拖到該框。 – 2012-01-08 11:44:46

+0

@YochaiTimmer我更新了這篇文章,我試圖從資源管理器中拖動文件。 – nullable 2012-01-08 21:36:05

回答

22

我有同樣的問題。這只是因爲我正在從「以管理員身份運行」會話進行調試。我認爲,自VISTA以來,有一種安全措施可以防止掉到特權應用程序。

+1

這是那種讓你頭腦發熱的東西 – 2016-01-12 13:23:21

+1

你應該得到這個解決方案的獎章 – KroaX 2017-01-23 14:43:44

+0

對不起,要放一個「謝謝!!!!」的評論......這個問題是一個瘋狂的行爲,windows不會通知任何東西關於這個,該死的3個小時試圖做一個拖放工作... – FabianSilva 2017-09-18 19:49:05

2

我發現雖然我在Visual Studio的調試模式下運行我的Forms應用程序,但它沒有工作。只有當我在VS之外運行它時,它才能完美運行。據推測,這也是與Windows 7(可能更高版本)的安全性有關。

相關問題