2013-04-11 4 views
1

파일 시스템에서 양식으로 문서를 드래그하는 동안 마우스 커서에 드래그 된 파일 수를 표시해야합니다.WPF에서 마우스 끌기 커서 변경

다음 코드를 수행했지만 끌기 커서를 변경할 수 없습니다. 끌어 형성 양식하고있다

 
private void tbDisplayFileContents_GiveFeedback(object sender, GiveFeedbackEventArgs e) 
     { 
      if (e.Effects == DragDropEffects.Copy) 
      { 
       e.UseDefaultCursors = false; 
       // Mouse.SetCursor(Cursors.Hand); 

       Icon ico = new Icon(string.Concat("1365516094_10371.ico")); 
       //Mouse.Cursor = GenerateCursor.CreateCursor(ico, true, new System.Drawing.Color()); 
       Mouse.SetCursor(GenerateCursor.CreateCursor(ico, true, new System.Drawing.Color())); 
      } 
      else 
       e.UseDefaultCursors = true; 

      e.Handled = true; 
     } 

을 다음과 같이 제가 GiveFeedBack 이벤트 사용한이

private void tbDisplayFileContents_PreviewDragOver(object sender, DragEventArgs args) 
    { 
     if (IsSingleFile(args) != null) 
     { 
       tbDisplayFileContents_PreviewDrop(sender, args); 
     } 
     else 
     { 
      // args.Effects = DragDropEffects.None; 
     } 
     Mouse.SetCursor(Cursors.Hand); 
     Icon ico = new Icon(string.Concat("1365516094_10371.ico")); 
     tbDisplayFileContents.Cursor = GenerateCursor.CreateCursor(ico, true, new System.Drawing.Color()); 
     args.Handled = true; 
    } 

    private void tbDisplayFileContents_PreviewDrop(object sender, DragEventArgs args) 
    { 
     args.Handled = true; 
     string files = string.Empty; 
     string[] fileName = IsSingleFile(args); 
     if (fileName == null) return; 
     isDrag = true; 
     DoEvents(); 
     for (int i = 0; i < fileName.Length; i++) 
     { 
      if (i == 0) 
      { 
       files = string.Concat("1] ", fileName[i]); 
      } 
      else 
      { 
       int j = i + 1; 
       files = string.Concat(files, Environment.NewLine, j, "] ", fileName[i]); 
      } 
     } 

     lblfileName.Content = files; 
    } 


    private string[] IsSingleFile(DragEventArgs args) 
    { 
     if (args.Data.GetDataPresent(DataFormats.FileDrop, true)) 
     { 
      string[] fileNames = args.Data.GetData(DataFormats.FileDrop, true) as string[]; 
      if (fileNames.Length != 0) 
      { 
       if (File.Exists(fileNames[0])) 
       { 
        // At this point we know there is a single file. 
        return fileNames; 
       } 
      } 
     } 
     return null; 
    } 
    #endregion 

    #region -------Events-------- 
    private void btnClear_Click(object sender, RoutedEventArgs e) 
    { 
     lblfileName.Content = string.Empty; 
    } 

    #endregion 
    private void tbDisplayFileContents_PreviewDragEnter(object sender, DragEventArgs e) 
    { 
     e.Effects = DragDropEffects.None; 
    } 
    public static void DoEvents() 
    { 
     Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, 
               new Action(delegate 
     { 
      Icon ico = new Icon(string.Concat("1365516094_10371.ico")); 
      Mouse.OverrideCursor = GenerateCursor.CreateCursor(ico, true, new System.Drawing.Color()); 
     })); 
    } 

을 할 수있는 가장 좋은 방법을 알려 주시기 바랍니다하지만 (파일)의 내용은 작동하지 않습니다 바탕 화면의 파일과 같이 외부 양식에서 드래그됩니다.

답변

1

코드에서 드래그 앤 드롭 작업 중 마우스 커서를 수정하는 데 사용되는 GiveFeedback 이벤트가 누락되었습니다.

+0

아직 작동하지 않습니다 ... – Pravin