2010-05-21 14 views
16

Bu konuda çok fazla cevap olduğunu biliyorum, ancak yine de işe yaramayacağım. AllowDrop'u uygulamanın her seviyesinde her kontrolde etkinleştirdim ve DragEnter ve Drop'i her kontrolde boşa çıkarmaya çalıştım. Öğeleri uygulama içinde sürükleyip bırakabilirim, ancak Windows Gezgini'nden veya masaüstünden bir şey getirmeye çalıştığım her zaman, bana Hayır simgesi veriyor. Ne yaptığım hakkında yanlış bir fikrin var mı?Windows Gezgini'nden Sürükle ve Bırak'a bir C# WPF uygulamasına nasıl izin verebilirim?

Yaptığım şeyin bir örneği. Hala hareket imlecini göstermez ve MainWindow_DragEnter işlevine basmaz.

namespace WpfApplication1 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 
      this.AllowDrop = true; 
      this.DragEnter += new DragEventHandler(MainWindow_DragEnter); 
     } 

     void MainWindow_DragEnter(object sender, DragEventArgs e) 
     { 
      e.Effects = DragDropEffects.Move; 
     } 
    } 
} 

cevap

13

AllowDrop'u sadece sürükle & damla kullanma imkanı aktive eder. Kendiniz halletmelisiniz.

Gördüğünüz gibi AllowDrop özelliği olan Nesneler de DragEnter, DragOver, DragLeave olaylarına sahiptir. Bu anlarda ne yapmak istediğinizi kodlamalısınız. İmleci değiştirebilir, düşmüş öğeleri kabul edebilirsin, vb. Ama bunu kendi başına yapmalısın. Örneğin. DragEventArgs.Effects'i arayın.

Yeni bir WPF uygulaması açtım, seçili pencere etkin, AllowDrop etkin, olay işleyicisi DragEnter ekledim ve buraya koydu: e.Effects = DragDropEffects.Move; Benim için iyi çalışıyor.

+0

Bunu denedim ve aynı sonuçları vardı. MainMindow_DragEnter işlevinde bir kesme noktası koydum, ancak Explorer penceresinden bir şey sürüklediğimde hiçbir zaman vurulmuyor. İmleç hala "Hayır" işareti. –

+4

Teşekkürler, Visual Studio'da Yönetici modunda olmasaydım çözümünüz iyi çalışırdı. –

+0

Teşekkürler Seabass__ Ben bu "Admin" sorununu ümit ediyordum! – germanSharper

29

Sorunumu çözdüğüme inanıyorum. Visual Studio'yu yönetici olarak çalıştırıyordum. Uygulamamı başlattığında, Explorer Kullanıcı modunda çalıştığı için Explorer'dan gelen sürüklemeleri tanımıyordu. Umarım bu bonehead hareketi başkasına yardım eder.

+0

Bu benim sorunum değildi, ancak [TextBox, RichTextBox ve FlowDocument] (http://stackoverflow.com/a/336283/116047) 'nin hepsinin [biraz tweaking] gerekli olduğunu öğrendim (http: //social.msdn Sürükle-bırak özelliğini etkinleştirmek için .microsoft.com/forums/tr-US/wpf/thread/a539c487-1dec-4935-b91b-c3ec252eb834). – Pakman

+0

VS'yi Pencere 7'de Yönetici olarak çalıştırıyordum ve "Hayır" işareti almayı, aynı zamanda uygulamayı bağımsız olarak Yönetici olarak çalıştırmaya da çalışıyordum. Artık ayrıcalık yükseltilmiş uygulamalar için Sürükle ve Bırak çalışmasının nasıl yapılacağını öğrenmek için ... http://stackoverflow.com/questions/2833709/c-sharp-drag-drop-does-not-work-on-windows-7 – Llyle

İlgili konular