2012-02-27 21 views
16

Metin kutusuna tam dosya yolunu gösterecek şekilde bir dosyayı sürükleyip bırakmak istiyorum. Sürükle bırak ve sürükle bırak olaylarını kullandım ama olayları girmediklerini anladım.metin kutusuna sürükleyip bırakma

private void sslCertField_DragDrop(object sender, DragEventArgs e) 
{ 
    if (e.Data.GetDataPresent(DataFormats.FileDrop, false) == true) 
    { 
     e.Effect = DragDropEffects.All; 
    } 
} 

private void sslCertField_DragEnter(object sender, DragEventArgs e) 
{ 
    string file = (string)e.Data.GetData(DataFormats.FileDrop); 
    serverURLField.Text = file; 
} 

Neyi yanlış yaptığımı işaret edebilir mi?

GÜNCELLEME: Program yükseltilmiş izinlerle çalıştırmak için ayarlanmış olup olmadığını Çalışmaz

+0

bize bazı biçimlendirme gösterebilir çalışacak? – gaurawerma

cevap

17

sizin metin kutusu özelliğini kontrol edin (vista/win 7) - bu true ayarlanmalıdır.

string[] files = (string[])e.Data.GetData(DataFormats.FileDrop); 
if(files != null && files.Length != 0) 
{ 
    serverURLField.Text = files[0]; 
} 

Ve ben size sürükleme olay işleyicileri kod takas gerektiğini düşünüyorum - genellikle sürükle-bırak mümkündür kullanıcıyı gösterir: Ayrıca, sadece string, DataFormats.FileDrop durumunda string[] için sürükle-bırak verilerini dönüştürmek DragEnter ve gerçek işlemi DragDrop üzerinde gerçekleştirin.

+0

Söylediğin herşeyi yaptım. Allowdrop öğesinin true değerini değiştirdim ve yöntemlerin içeriğini değiştirmenin yanı sıra string [] olarak değiştirdim. Ancak, olaylar hala aktif değildir. Bu form bir ana formun bir parçasıdır. Bu etkiler mi? Ancak, bu metin kutusu, bir dosya sürüklemeyi denediğinde aslında ebeveynin denetimleri – michelle

+2

bir parçası değil, reddedilen simge al – michelle

+1

Uygulamanız, Win7/Vista üzerinde yükseltilmiş (yönetici) ayrıcalıkları altında çalışıyor mu? Bu durumda explorer'dan sürükle-bırak çalışmaz. – max

4

.. Eğer çözüm oluşturmak kez oluşturulan .exe çalıştırın ... görsel stüdyodan çalıştırmak yardımcı olur :)

+1

Visual Studio'daki projeyi yürütmek bir fark yaratıyor mu? Gerçekten mi ? Visual Studio, sürükle bırak işlevini devre dışı bırakacak mı? – PurpleXenon

+0

evet bir şekilde hata ayıklamadan işe yaramadı ancak doğrudan doğruya çalıştı – PersyJack

+0

Kontrolüm 3 kez bunu anlamaya çalışıyorum ... :(Teşekkürler. – Jeff

8

Yükseltilmiş ayrıcalıklar bununla ilgisi olmamalıdır umut yok. Ayrıca Max'in cevapladığı DragDrop'a ek olarak DragOver olayını da uygulamanız gerekir. Bu DragDrop için eklenmesi gereken kod şudur:

private void textBoxFile_DragOver(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) e.Effect = DragDropEffects.Copy; else e.Effect = DragDropEffects.None; }

+3

Windows Form uygulamalarında, işe almak için aşağıdakilerin yapılması gerekiyor : 1) Set TextBox.AllowDrop = true; '2) Max'in kodunu kullanarak' TextBox.DragDrop() 'olayını taşıyın 3) Ayrıca Joao'nun yukarıdaki kodunu kullanarak' TextBox.DragOver() 'olayını da ele alın. 3 şartın tamamı karşılandığında işe yaramalı. Benim durumumda "yükseltilmiş haklar" gerekmedi, ancak sizin için bir sorun olduğunu keşfederseniz, Visual Studio kısayolunuzu "Yönetici olarak çalıştır" şeklinde değiştirebilirsiniz. –

4

Eğer WPF kullanarak konum ve hala, sen

kullanmak gerekir (benim durumumda) burada cevapları ile çalışmazsa here açıklandığı gibi PreviewDragEnter olay
e.Handled = true; 

ve here (aynı makale, ama her ihtimale karşı bir iner). Görsel stüdyo Yönetici hakları Sürükle altında çalışan ve bırak işlevselliği ise

private void TextBox_PreviewDragEnter(object sender, DragEventArgs e) 
{ 
    e.Effects = DragDropEffects.Copy; 
    e.Handled = true; 
} 

private void TextBox_PreviewDrop(object sender, DragEventArgs e) 
{ 
    object text = e.Data.GetData(DataFormats.FileDrop); 
    TextBox tb = sender as TextBox; 
    if (tb != null) 
    { 
     tb.Text = string.Format("{0}", ((string[])text)[0]); 
    } 
} 
+0

PreviewDragEnter olmamalı, * PreviewDragOver * olmalıdır. Bu olayı kullanmak TextBox için benim için çalıştı. –

1

çalışmamasına görünüyor: Burada

o kaynaktan, kod parçacığı olduğunu.

=> Yönetici hakları olmadan görsel stüdyo çalıştırın ve

İlgili konular