我有一个RichTextBox,我想允许用户将文件从磁盘拖放到。所有应该出现在文本框中的是文件名。此代码当前将"System.String[]"
添加到文本框而不是文件名。当我将DataFormats::FileDrop
更改为DataFormats::Text
,因为this MSDN似乎暗示,我得到一个NULL解引用错误。拖放文件名Visual(托管)C++
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);
}
对,我正在使用FileDrop。问题是它打印出“System.String []”而不是文件名。我真的很想获得文件名。 – Goodies
你能举个例子吗? – Goodies
LoadFile函数将文件路径作为参数。另外,^ str变量显然不是一个数组。 – Goodies