所以,我正在开发一个应用程序,它能够将文件拖放到表单中,并将其信息显示到datagridview中。基本上我已经在VB.Net中开发了一些东西,现在我想将它升级到C#并让某些东西更好地添加功能。
我现在卡住了,因为在VB.Net中我有这种代码的和平
Private MeuFicheiro As FileInfo
Private Sub frmMenu_DragDrop(sender As Object, e As DragEventArgs) Handles cmdEntrar.DragDrop
Dim file As String = e.Data.GetData(DataFormats.FileDrop)(0)
MyFile = New FileInfo(ficheiro)
If String.IsNullOrWhiteSpace(MyFile.Extension) Then
Exit Sub
End If
End Sub
我尝试使用Dim file As String = e.Data.GetData(DataFormats.FileDrop)(0)
C#,但当然会做一些更改:
string file = e.Data.GetData(DataFormats.FileDrop)(0);
:
private void frmMenu_DragDrop(object sender, DragEventArgs e)
{
string ficheiro = e.Data.GetData(DataFormats.FileDrop)(0);
MeuFicheiro = new FileInfo(ficheiro);
if (string.IsNullOrWhiteSpace(MeuFicheiro.Extension))
{
return;
}
}
但它在e.Data.GetData(DataFormats.FileDrop)(0)
方法名称
预期的方法名称
那么你们有什么东西可以帮我解决这个错误吗?
答案 0 :(得分:5)
从括号变为方括号。在C#中,方括号用于索引数组。
这样做:
string file = e.Data.GetData(DataFormats.FileDrop)[0]; // see square brackets
答案 1 :(得分:3)
如果GetData
返回IList
,则将e.Data.GetData(DataFormats.FileDrop)(0)
更改为e.Data.GetData(DataFormats.FileDrop)[0]
答案 2 :(得分:0)
您的代码实际上有两个错误:
首先,DataObject.GetData
returns an Object instance。首先,您需要将该对象强制转换为您希望存储在该Drag事件中的类型
然后,假设returing类型确实是字符串的集合,您需要使用方括号([])来访问第一个项目。
<link rel="stylesheet" type="text/css" href="jquery.fullPage.css" />
<script type="text/javascript" src="jquery.fullPage.js"></script>
请注意,我已转换为var collection = e.Data.GetData(DataFormats.FileDrop) as IList<string>;
string ficheiro = collection[0];
,因为它将涵盖大多数C#的可索引泛型集合(数组,列表,哈希集...)。
另一方面,如果该对象GetData返回的是一个字符串,则应该执行:
IList<string>