C#中预期的方法名称

时间:2016-11-19 20:10:55

标签: c#

所以,我正在开发一个应用程序,它能够将文件拖放到表单中,并将其信息显示到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)方法名称

中给出了一个错误
  

预期的方法名称

那么你们有什么东西可以帮我解决这个错误吗?

3 个答案:

答案 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>