2009-04-07 28 views

cevap

25

bu çalışması gerekir düşünüyorum:

<Grid> 
    <ListBox AllowDrop="True" DragOver="lbx1_DragOver" 
                 Drop="lbx1_Drop"></ListBox> 
</Grid> 

Diyelim ki sadece C# dosyalarına izin vermek istediğimizi varsayalım:

private void lbx1_DragOver(object sender, DragEventArgs e) 
{ 
    bool dropEnabled = true; 
    if (e.Data.GetDataPresent(DataFormats.FileDrop, true)) 
    { 
     string[] filenames = 
         e.Data.GetData(DataFormats.FileDrop, true) as string[]; 

     foreach (string filename in filenames) 
     { 
     if(System.IO.Path.GetExtension(filename).ToUpperInvariant() != ".CS") 
     { 
      dropEnabled = false; 
    break; 
     } 
     } 
    } 
    else 
    { 
     dropEnabled = false; 
    } 

    if (!dropEnabled) 
    { 
     e.Effects = DragDropEffects.None; 
    e.Handled = true; 
    }    
} 


private void lbx1_Drop(object sender, DragEventArgs e) 
{ 
    string[] droppedFilenames = 
         e.Data.GetData(DataFormats.FileDrop, true) as string[]; 
} 
+3

mükemmel, teşekkürler! Üzerine bıraktığınız denetimin alt öğelerini hareket ettirdiğinizde, yanıp sönen imlecin bazı yan etkilerini önlemek için bunu ekleyeceğim, bunu ekleyebilirsiniz: DragEnter olayı kontrolünün yapılması için DragEnter = "lbx1_DragOver" DragOver'da olduğu gibi. – David

İlgili konular