ファイルのDrag&Dropを許可する

WindowsフォームへのファイルのDrag&Dropを許可する方法。


まずは、いつものようにイベントハンドラを作成。

private: System::Void Form_DragEnter( System::Object^ sender, DragEventArgs^ e){
    // ドロップされようとしているデータが、ファイルの時だけ受け付ける
    if( e->Data->GetDataPresent(::DataFormats::FileDrop) )
    {
        e->Effect = ::DragDropEffects::All;
    }
    else
    {
        e->Effect = ::DragDropEffects::None;
    }
}

private: System::Void Form_DragDrop( System::Object^ sender, DragEventArgs^ e){
    // ドロップされたファイルをファイルのパス文字列に変換
    array^ strDropFile = (array<String^>^)e->Data->GetData( ::DataFormats::FileDrop, false );

    // 全て表示
    for each( String^ str in strDropFile )
    {
        MessageBox::Show( str, “Drag & Drop”, MessageBoxButtons::OK, MessageBoxIcon::Information );
    }
}

フォームプロパティのDrag&Dropを許可にして、イベントを登録する

this->AllowDrop = true;
this->DragEnter += gcnew DragEventHandler( this, &Form_FilerMain::Form_DragEnter );
this->DragDrop += gcnew DragEventHandler( this, &Form_FilerMain::Form_DragDrop );

なんだかWin32 SDKでやるより難しい気がするのは気のせいだろうか・・・

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です