2012-08-26 36 views
1

我嘗試在文本框把文件夾的名字,所以我已經習慣了這樣的代碼:文本框顯示變量的類型 - 而不是內容

private: System::Void textBox1_DragEnter(System::Object^ sender, System::Windows::Forms::DragEventArgs^ e) { 
      if (e->Data->GetDataPresent(DataFormats::FileDrop)) 
      { 
       e->Effect = DragDropEffects::Copy; 
      } 
     } 
private: System::Void textBox1_DragDrop(System::Object^ sender, System::Windows::Forms::DragEventArgs^ e) { 
      if (e->Data->GetDataPresent(DataFormats::FileDrop)) 
      { 
       textBox1->Text = Convert::ToString(e->Data->GetData(DataFormats::FileDrop)); 
      } 
     } 

它的工作(0失誤),但是當我把文件夾複製到文本框,文本框,告訴我沒有路徑,但:System.String[]

我使用的是:C++,.NET,Visual Studio 2010中

任何想法?

回答

1
e->Data->GetData(DataFormats::FileDrop) 

返回一個string[](一個字符串數組),而不是一個單一string。當您嘗試使用Convert::ToString將其轉換爲字符串時,它僅使用顯示類型名稱的默認Object.ToString()行爲。你還期望它做什麼?沒有默認的將一個字符串數組聚合爲一個的概念。

您應該使用由GetData()返回的對象,並將它自己轉換爲字符串。如果你期望一個單一的項目,測試它,抓住第一個項目,你有你的字符串。

如果你想支持很多項目,你可以使用例如string.Join(),並指定一個分隔符。

你應該利用這個去的丟棄的文件數據訪問:

array<System::String^>^ items = (array<System::String^>^)e->Data->GetData(DataFormats::FileDrop); 

從那裏,你可以決定如何items轉換爲字符串。

+0

嗯......所以這是我的問題。 我不知道如何我可以轉換系統::對象^系統::字符串^沒有轉換類。你能告訴我任何例子或想法怎麼做嗎? –

+0

編輯我的答案給你一個開始。 – tenfour

+0

謝謝,我需要這個。現在,它正在工作:) –

相關問題