2009-04-07 22 views

Trả lời

25

Tôi nghĩ rằng điều này sẽ làm việc:

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

Giả sử bạn muốn cho phép chỉ C# tập tin:

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

hoàn hảo, cảm ơn! Tôi sẽ chỉ thêm rằng để ngăn chặn một số tác dụng phụ của con trỏ nhấp nháy khi bạn di chuyển qua các con của điều khiển bạn đang rơi vào, bạn có thể thêm điều này: DragEnter = "lbx1_DragOver" để kiểm tra được thực hiện trên sự kiện DragEnter cũng như trên DragOver. – David

Các vấn đề liên quan