我有一个RichTextBox,希望允许用户将磁盘上的文件拖放到其中。文本框中应该显示的仅是文件名。但是,当前的代码在文本框中添加了"System.String[]"而不是文件名。当我将DataFormats::FileDrop更改为DataFormats::Text时,如this MSDN所建议的那样,我会得到一个NULL解引用错误。
RichTextBox名称为rtbFile。在我的构造函数中,我有:
我���事件设置为以下方式(在InitializeComponents中):
函数定义如下:
RichTextBox名称为rtbFile。在我的构造函数中,我有:
this->rtbFile->AllowDrop = true;
我���事件设置为以下方式(在InitializeComponents中):
this->rtbFile->DragEnter += gcnew System::Windows::Forms::DragEventHandler(this, &VanicheMain::rtbFile_DragEnter);
this->rtbFile->DragDrop += gcnew System::Windows::Forms::DragEventHandler(this, &VanicheMain::rtbFile_DragDrop);
函数定义如下:
void rtbFile_DragEnter(System::Object ^sender, System::Windows::Forms::DragEventArgs ^ e) {
if (e->Data->GetDataPresent(DataFormats::FileDrop))
e->Effect = DragDropEffects::Copy;
else
e->Effect = DragDropEffects::None;
}
System::Void rtbFile_DragDrop(System::Object ^sender, System::Windows::Forms::DragEventArgs ^e){
int i = rtbFile->SelectionStart;;
String ^s = rtbFile->Text->Substring(i);
rtbFile->Text = rtbFile->Text->Substring(0, i);
String ^str = String::Concat(rtbFile->Text, e->Data->GetData(DataFormats::FileDrop)->ToString());
rtbFile->Text = String::Concat(str, s);
}