实现方式和C#中一样,只是要改成C++/CLI的语法。
控件的DragEnter事件处理代码:
void Form1::Form1_DragEnter( System::Object^ sender, System::Windows::Forms::DragEventArgs^ e ) { if ( e->Data->GetDataPresent( DataFormats::FileDrop ) ) { Array^ files=(Array^)e->Data->GetData(DataFormats::FileDrop); System::String^ filename = files->GetValue(0)->ToString(); //这里只判断第一个文件是否是可以接受的格式 if( filename ->EndsWith(L".dds",System::StringComparison::CurrentCultureIgnoreCase) ) { e->Effect = e->AllowedEffect; } } }
控件的DragDrop事件处理代码:
void Form1::Form1_DragDrop( System::Object^ sender, System::Windows::Forms::DragEventArgs^ e ) { if ( e->Data->GetDataPresent( DataFormats::FileDrop ) ) { //被拖放的所有文件都保存在一个Array对象中 Array^ files=(Array^)e->Data->GetData(DataFormats::FileDrop); //遍历Array,获取其中的所有文件 for each(Object^ obj in files) { String^ filename = obj->ToString(); if( filename ->EndsWith(L".dds",System::StringComparison::CurrentCultureIgnoreCase) ) { //处理文件 } } } }