2

画像の小さなサムネイルを含むリストビューがあります。各画像には、フルパスを含むタグがあります。

右クリック メニューを使用すると、ユーザーは COPY をクリックできます。

次に、このコードが実行されます。

Dim selectedfile As String

selectedfile = Me.lvFotos.SelectedItems(0).Tag


Dim dataobj As New DataObject(DataFormats.FileDrop, selectedfile)

Clipboard.Clear()
Clipboard.SetDataObject(dataobj)

デスクトップをクリックしてファイルを貼り付けると、VS2010 で例外エラーが発生します。

タイプ 'System.Runtime.InteropServices.COMException' の例外が System.Windows.Forms.dll で発生し、マネージド/ネイティブ境界の前に処理されませんでした

追加情報: 無効な FORMATETC 構造体 (HRESULT からの例外: 0x80040064 (DV_E_FORMATETC))

ここで何が間違っていますか?

rg。エリック

4

3 に答える 3

4

直接使用できますMy.Computer.FileSystem.CopyFile

Dim source As String = lvFotos.SelectedItems(0).Tag
Dim destination As String = My.Computer.FileSystem.SpecialDirectories.Desktop & from.Substring(from.LastIndexOf("\"))
My.Computer.FileSystem.CopyFile(source, destination)
于 2014-09-15T15:58:13.667 に答える
1

私が間違っていたことを見つけました。

最初は配列内のファイルの名前で試してみましたが、同じエラーが発生しました。

今、私は次のようにしています:

 Dim selectedfile(0) As String

selectedfile(0) = Me.lvFotos.SelectedItems(0).Tag

Dim dataobj As New DataObject

dataobj.SetData(DataFormats.FileDrop, True, selectedfile)

Clipboard.Clear()
Clipboard.SetDataObject(dataobj, True)

違いは、SETDATA の行にあります。SetData と SetDataObject で 2 番目の引数を TRUE に設定すると、機能し始めました。

于 2014-09-16T13:38:57.633 に答える