윈도우 컨트롤은 드래그 앤 드롭 컨텐츠를 구현하는 양식 (끌어서 놓기) 기능

다른 컨트롤 상에 우선, 상기 제어 컨텐트

  개발 과정에서 종종 서로를 제어하는 ​​등의 요구 사항, 드래그 제어 데이터를 가지고있다. 예를 들어, 상기리스트 박스 상에 다른 데이터리스트 박스. TreeView의의 노드 또는 드래그 DataGridView에 데이터입니다.  

  응용 프로그램에서 등의 dragEnter, DragLeave 및 끌어서 놓기 이벤트와 같은 이벤트의 시리즈를 처리하여 드래그를 구현하고 Windows 응용 프로그램 작업에 놓습니다. 이러한 이벤트 매개 변수에 대한 가능한 정보를 사용하여, 당신은 쉽게 드래그 앤 드롭 할 수 있습니다.

  드래그이어서 대상에 영향을 드롭, 드래그 앤 드롭 동작은 제 드래그를 시작하고, 제어에 MouseDown 이벤트 응답 코드를 달성하기 위해 드롭 조작 및 필요한 데이터를 드래그하고, 세 단계를 통해 코드이며, DoDragDrop () 메소드를 호출 의 dragEnter 이벤트 응답 코드를 추가하고 DragDropEffects 열거 형의 복사본을 사용 또는 제어에 드래그 효과를 이동처럼, 마지막 작업 데이터를 배치하는 것입니다, 제어 대상에 데이터를 추가, 대상에 끌어서 놓기 응답 제어 코드를 추가합니다.

개인  보이드 를 Form1_Load ( 오브젝트 송신자 경우 System.EventArgs E) 
{ 
     .listBox1.AllowDrop = ;
     .listBox2.AllowDrop = 진정한 ;
     .listBox1.Items.Add ( " " );
     .listBox1.Items.Add ( " B " );
     .listBox1.Items.Add ( " C " ); 
} 개인 공극 listBox1_MouseDown ( 오브젝트 송신자 System.Windows.Forms.MouseEventArgs E) 
{ 

 
    .listBox1.DoDragDrop (  .listBox1.Items [ .listBox1.SelectedIndex, DragDropEffects.Move); 
} 

개인  공극 listBox2_DragEnter ( 오브젝트 송신자 System.Windows.Forms.DragEventArgs E) 
{ 
    경우 (e.Data.GetDataPresent (DataFormats.Text)) 
    { 
        e.Effect = DragDropEffects.Move; 
    } 
} 

개인  공극 listBox2_DragDrop ( 오브젝트 송신자 System.Windows.Forms.DragEventArgs 전자) 
{ 
    .listBox2.Items.Add (e.Data.GetData (DataFormats.Text));
    .listBox1.Items.Remove (e.Data.GetData (DataFormats.Text)); 
}

둘째, 문서 경로에 대한 액세스를 제어 할 수있는 파일을 드래그

  사용자 경험은 좋은 것을 끌어 프로그램에 파일이나 디렉토리를 놓습니다.

  (System.Array) e.Data.GetData (DataFormats.FileDrop) : 코드의 경로를 통해 드래그하기.

  그런 다음 복사 이러한 경로를 붙여 넣을 수 있습니다.

공용  부분  클래스 를 Form1 : 폼 
{ 
    공개 를 Form1 () 
    { 
        InitializeComponent를 (); 
    } 

    개인  보이드 를 Form1_Load ( 오브젝트 송신자있는 EventArgs E) 
    { 
        SetCtrlDrag.SetCtrlDragEvent ( .textBox1); 
    } 
} 

공용  클래스 SetCtrlDrag 
{ 
    공공  정적  무효 SetCtrlDragEvent (CTRL 제어) 
    { 
        경우 (CTRL은 텍스트 상자) 
        { 
            있는 TextBox TB = CTRL 로서텍스트 상자는, 
            tb.AllowDrop는 = true로 , 
            tb.DragEnter + = (SENDER, E) => 
            { 
                e.Effect = DragDropEffects.Link; // 아이콘을 드래그 
                 };

            tb.DragDrop + = (발신자, E) => 
            { 
                ((텍스트 상자) 발신자)는 .text = ((System.Array) e.Data.GetData (DataFormats.FileDrop)) GetValue. ( 0 )로 .toString (); 
            }; 
        } 
    } 
}

인터페이스 효과

TestFilePathDrag

셋째, 지침

MSDN : http://msdn.microsoft.com/zh-cn/library/system.windows.forms.dragdropeffects.aspx

1. 방법

드래그 및 효과를 놓으면 컨트롤이 Control 클래스로부터 파생되기 때문에 어느 한, 개발자가 수, C #을 드래그 구현하는 체계적인 방법 DoDragDrop 방법을 제공하며, 직접적으로 또는 간접적으로 동작이 제어 클래스에 의해 정의되는, 시작 드롭 방법은 시각화 구성 요소를 DoDragDrop 호출합니다. DoDragDrop 방법은 다음과 같은 구문을 사용

공공 DragDropEffects DoDragDrop (Object 데이터, DragDropEffects allowedEffects)

  데이터 : 사용자가 데이터의 내용을 드래그합니다. 드래그 내용은이 방법 위치의 첫 번째 인수에 전달해야합니다.

  allowedEffects : 열거 한 값 DragDropEffects이 종류의 효과가 드래그 동작을 포함한다. DragDropEffects 열거 값은 표 32.8에 도시.

  DragDropEffects 장 举值 :

  •     모든 : 데이터 제거, 드래그 소스에서 복사하고 드롭 타겟으로 이동
  •     복사 : 드롭 대상으로 데이터를 복사
  •     링크 : 드래그 드롭 대상에 데이터 소스를 연결
  •     이동 : 드롭 타겟으로 모바일 데이터 소스를 드래그
  •     없음 : 드롭 대상은 데이터를 수락하지 않습니다
  •     스크롤 : 약 드롭 대상에 압연 시작, 또는 현재 굴러

  현상 DoDragDrop 법을 이용하는 경우, 파라미터 allowedEffects에게 테이블의 모든 멤버를 지정해야한다. 또한, 비트 연산자 통과 파라미터 세트로 부재 중 어느 하나가 원하는 드래그 효과를 제공하는 것을 특징으로 사용될 수있다 다음과 같이 키 코드는 달성하기 :

DragDropEffects.Copy | DragDropEffects.None

2. 행사

  C #을 드래그를 제공하고보다 나은 결과를 달성하기 위해 드래그 앤 드롭 방법과 함께 사용할 경우 시스템을 드롭. 표에서와 같이 기존의 드래그 이벤트.

대상의 이벤트 :

  •     의 dragEnter : 사용자가 드래그 컨트롤에 마우스 커서 중 처음으로 드롭 조작하면 이벤트를 이끌
  •     로 dragOver : 동일한 제어 내에서 유지 마우스를 이동할 경우에, 이벤트 트리거로 dragOver
  •     끌어서 놓기는 : 드래그 작업이 완료 될 때 발생
  •     DragLeave : 사용자가 창 밖으로 이동하는 경우, 이벤트는 DragLeave 트리거

소스의 이벤트 :

  •     GiveFeedback는 : 끌기 작업을 수행하는 동안 발생
  •     QueryContinueDrag : 키보드 또는 마우스 단추 상태가 변경 QueryContinueDrag 이벤트에 이끌 드래그 앤 드롭 조작 중에. QueryContinueDrag 이벤트는 놓기 작업을 취소해야할지 여부를 결정하기 위해 드래그 소스를 할 수 있습니다

추천

출처www.cnblogs.com/springsnow/p/11586293.html