天天看點

TX Text Control文字處理教程(13)實作拖放操作

 Samples\WinForms\VB.NET\DragDrop 

        Samples\WinForms\CSharp\DragDrop 

<b>(一)兩種拖放類型</b> 

在大多數文字處理器中支援兩種類型的拖放操作: 

1.        文本拖放操作,在文檔中選擇一段文本,如何将其拖放到文檔的另一個位置。 

2.        檔案拖放操作,在資料總管中拖拽一個檔案到文字處理器中,通過這種方式來打開該檔案。 

在Text Control中設定TextControl.AllowDrag = true和TextControl.AllowDrop = true便可自動自持文本拖放操作。檔案拖放操作在Text Control中也完全支援,并且可以以多種方式來适應你的應用程式。 

<b>(二)檔案拖放操作</b> 

可以使用 .NET中的三個事件來實作檔案的拖放操作: 

DragEnter:當某一對象被拖拽到目标對象的邊界時會觸發該事件,可在該事件中檢查檔案是否是應用程式接受的檔案。 

DragOver:當滑鼠在目标對象中移動時觸發該事件,如果目前拖拽的檔案是應用程式接受的檔案,将會改變滑鼠狀态,以此來告知使用者檔案為可接受的檔案。 

DragDrop:當使用者在目标對象中松開滑鼠按鍵時觸發該事件,應用程式将加載被拖放的檔案。 

如果被拖拽的檔案被釋放到文本視窗,将會觸發TX Text Control的事件;如何釋放的位置超出了TX Text Control控件的邊界,例如:釋放到應用程式的工具欄,将會觸發應用程式窗體的事件。各系統中對不同釋放點所提供的處理行為也是多樣化的,在MS Word 2007中,如果釋放點在工具欄上将加載改檔案,釋放點在文本區域中卻不會加載該檔案。 

<b>(三)處理拖放事件</b> 

下面将展示示例程式中Drag和Drop事件的處理邏輯。示例中允許在系統的任意位置釋放檔案,而且這些處理邏輯都被封裝在DragDropHander類中,可在你的系統中重複使用該類型。首先,建立一個FileDragDropHandler類的執行個體:

[C#]  

FileDragDropHandler fileDragDrop = new FileDragDropHandler(); 

接下來,可以利用窗體或者控件的事件來處理被拖拽的檔案,TX Text Control事件的處理邏輯都是依靠DragDropHandler類來完成的,窗體事件與TX Text Control控件的有着同樣的處理方法。

private void textControl1_DragDrop(object sender, DragEventArgs e)  

{  

  loadFile(fileDragDrop.FileName, fileDragDrop.StreamType);  

private void textControl1_DragEnter(object sender, DragEventArgs e)  

  fileDragDrop.Reset();  

  fileDragDrop.CheckDraggedFiles((string[])e.Data.GetData(DataFormats.FileDrop));  

private void textControl1_DragOver(object sender, DragEventArgs e)  

  if (fileDragDrop.CanDrop == true)  

    e.Effect = fileDragDrop.GetDragDropEffect(e.AllowedEffect, e.KeyState);  

在DragEnter事件中将再次檢查該檔案是否是被支援。如果是支援的檔案,CanDrop屬性将傳回true,CanDrop屬性可用于決定DragDrop是否被允許。你還可以通過GetDragDropEffect方法傳回一個基于目前Keystate的DragDropEffects類型的值,通過它可以控制目前的滑鼠狀态。

本文轉自 powertoolsteam 51CTO部落格,原文連結:http://blog.51cto.com/powertoolsteam/779562,如需轉載請自行聯系原作者

上一篇: JS原型鍊
下一篇: 随筆釋出