西西軟件園多重安全檢測下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁編程開發(fā)C#.NET → C#中實現(xiàn)文件拖放打開的方法

C#中實現(xiàn)文件拖放打開的方法

相關軟件相關文章發(fā)表評論 來源:本站整理時間:2010/11/29 0:49:07字體大小:A-A+

作者:佚名點擊:423次評論:0次標簽: 拖放 文件拖放

  • 類型:文件處理大。102KB語言:中文 評分:5.0
  • 標簽:
立即下載

private void Form1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
e.Effect = DragDropEffects.Link;
else e.Effect = DragDropEffects.None;
}

private void Form1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
{
//其中 label1.Text顯示的就是拖進文件的文件名;
label1.Text = ((System.Array)e.Data.GetData(DataFormats.FileDrop)).GetValue(0).ToString();
}
注:窗體的 AllowDrop=True;
-----------------------------
必須處理好三種事件:"ItemDrag"、"DragEnter"、"DragDrop"。其中只有第一種事件是在源組件中觸發(fā)的,另外二種事件是在目標組
件中觸發(fā)的。其中當用戶拖動組件觸發(fā)"ItemDrag"事件;當拖動數(shù)據(jù)進入目標組件區(qū)域觸發(fā)"DragEnter"事件;當用戶在目標組件區(qū)域
放置拖動的數(shù)據(jù)觸發(fā)"DragDrop"事件。下面就根據(jù)拖放操作的操作順序來詳細介紹:
(1).開始"拖"(Drag)操作:
通過"DoDragDrop"方法拉開了拖放操作的第一步。"DoDragDrop"方法的語法為: DoDragDrop ( object data , DragDropEffects
allowedEffects ) ;

其中第二個參數(shù)來是說明此次拖放操作最后所要實現(xiàn)的效果,因為拖放操作有時實現(xiàn)的效果是把源組件中的內(nèi)容"拖"到目標組件中,
這種效果就是 "Move";有時拖放的效果是在目標組件中加入拖動的數(shù)據(jù),對源組件的內(nèi)容是沒有什么影響的,這種效果就是"Copy"。
當然無論是"Move"還是 "Copy",這都要通過具體的編程來實現(xiàn),設定這些效果只是告訴操作系統(tǒng),你進行拖放操作的類型,從而為拖
放操作設定特定的圖標。此例中實現(xiàn)開始"拖放 "操作的具體實現(xiàn)代碼如下:
private void treeView1_ItemDrag ( object sender , ItemDragEventArgs e )
{
string strItem = e.Item.ToString ( ) ;
//開始進行"Drag"操作
DoDragDrop ( strItem , DragDropEffects.Copy | DragDropEffects.Move ) ;
}

在上面代碼中,我們定義的拖放數(shù)據(jù)類型是字符串,其實拖放的數(shù)據(jù)類型可以是很多種的,你可以通過修改"DoDragDrop"方法的第一
個參數(shù)來設定你所要拖放數(shù)據(jù)類型,譬如:位圖或者其他什么。
(2).目標組件允許進行拖放操作:
既然你已經(jīng)開始進行拖放操作,你還必須告訴你要拖放到的目標組件,要接受你所拖放的數(shù)據(jù),"DragEnter"事件正好可以處理。在下
列的代碼中,我們是通過判斷拖放數(shù)據(jù)類型來確定是否接受拖放,如果是字符串,則可以,否則,則不行。具體代碼如下:
private void listView1_DragEnter ( object sender , DragEventArgs e )
{
//判斷是否目前拖動的數(shù)據(jù)是字符串,如果是,則拖動符串對目的組件進行拷貝

if ( e.Data.GetDataPresent ( DataFormats.Text ) )
e.Effect = DragDropEffects.Move ;
else
e.Effect = DragDropEffects.None ;
}

(3).獲得拖放的字符串,在目標組件中加入相應的內(nèi)容:
此步的處理過程是十分明確的,要分成二步來進行,首先要得到拖放的字符串,其次是在目標組件中加入以此字符串為標題的項目。
當然還要在相應的位置了。下面就是實現(xiàn)這二步操作的具體代碼:
private void listView1_DragDrop ( object sender , DragEventArgs e )
{
string dummy = "temp" ;
//獲得進行"Drag"操作中拖動的字符串
string s = ( string ) e.Data.GetData ( dummy.GetType ( ) ) ;
s = s.Substring ( s.IndexOf ( ":" ) + 1 ).Trim ( ) ;
Position.X = e.X ;
Position.Y = e.Y ;
Position = listView1.PointToClient ( Position ) ;
//在目標組件中加入以此字符串為標題的項目
listView1.Items.Add ( new ListViewItem ( s , 0 ) ) ;
}

此致通過對這三個事件的編程,已經(jīng)完成了由 TreeView組件到ListView 組件的拖放操作。

    相關評論

    閱讀本文后您有什么感想? 已有人給出評價!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評論

    最新評論

    發(fā)表評論 查看所有評論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字數(shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)