轉(zhuǎn)帖|其它|編輯:郝浩|2012-03-25 21:32:03.000|閱讀 337 次
概述:本章節(jié)主要描述如何在TX Text Control中實現(xiàn)拖放操作。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
本章節(jié)主要描述如何在TX Text Control中實現(xiàn)拖放操作,相應的源代碼可以在以下目錄中找到:
Samples\WinForms\VB.NET\DragDrop
Samples\WinForms\CSharp\DragDrop
(一)兩種拖放類型
在大多數(shù)文字處理器中支持兩種類型的拖放操作:
1. 文本拖放操作,在文檔中選擇一段文本,如何將其拖放到文檔的另一個位置。
2. 文件拖放操作,在資源管理器中拖拽一個文件到文字處理器中,通過這種方式來打開該文件。
在Text Control中設置TextControl.AllowDrag = true和TextControl.AllowDrop = true便可自動自持文本拖放操作。文件拖放操作在Text Control中也完全支持,并且可以以多種方式來適應你的應用程序。
(二)文件拖放操作
可以使用 .NET中的三個事件來實現(xiàn)文件的拖放操作:
DragEnter:當某一對象被拖拽到目標對象的邊界時會觸發(fā)該事件,可在該事件中檢查文件是否是應用程序接受的文件。
DragOver:當鼠標在目標對象中移動時觸發(fā)該事件,如果當前拖拽的文件是應用程序接受的文件,將會改變鼠標狀態(tài),以此來告知用戶文件為可接受的文件。
DragDrop:當用戶在目標對象中松開鼠標按鍵時觸發(fā)該事件,應用程序?qū)⒓虞d被拖放的文件。
如果被拖拽的文件被釋放到文本窗口,將會觸發(fā)TX Text Control的事件;如何釋放的位置超出了TX Text Control控件的邊界,例如:釋放到應用程序的工具欄,將會觸發(fā)應用程序窗體的事件。各系統(tǒng)中對不同釋放點所提供的處理行為也是多樣化的,在MS Word 2007中,如果釋放點在工具欄上將加載改文件,釋放點在文本區(qū)域中卻不會加載該文件。
(三)處理拖放事件
下面將展示示例程序中Drag和Drop事件的處理邏輯。示例中允許在系統(tǒng)的任意位置釋放文件,而且這些處理邏輯都被封裝在DragDropHander類中,可在你的系統(tǒng)中重復使用該類型。首先,創(chuàng)建一個FileDragDropHandler類的實例:
[C#]
FileDragDropHandler fileDragDrop = new FileDragDropHandler();
接下來,可以利用窗體或者控件的事件來處理被拖拽的文件,TX Text Control事件的處理邏輯都是依靠DragDropHandler類來完成的,窗體事件與TX Text Control控件的有著同樣的處理方法。
[C#]
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類型的值,通過它可以控制當前的鼠標狀態(tài)。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務必注明出處、不得修改原文相關鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:網(wǎng)絡轉(zhuǎn)載