C# 类型'的例外情况;System.InvalidCastException';,无法强制转换类型为';MS.Internal.NamedObject';输入';System.Data.DataRowView';

C# 类型'的例外情况;System.InvalidCastException';,无法强制转换类型为';MS.Internal.NamedObject';输入';System.Data.DataRowView';,c#,wpf,C#,Wpf,前端代码: <ListView Name="lvCus" MouseDoubleClick="ListViewItem_DoubleClick"> <ListView.View> <GridView AllowsColumnReorder="true" ColumnHeaderToolTip="TbCus"> <GridView

前端代码:

<ListView Name="lvCus" MouseDoubleClick="ListViewItem_DoubleClick">
    <ListView.View>
        <GridView AllowsColumnReorder="true" ColumnHeaderToolTip="TbCus">
            <GridViewColumn Header="CusID" Width="40" DisplayMemberBinding="{Binding Path=CusID}" />
            <GridViewColumn Header="Firstname" Width="120" DisplayMemberBinding="{Binding Path=fn}" />
            <GridViewColumn Header="Lastname" Width="120" DisplayMemberBinding="{Binding Path=ln}" />
            <GridViewColumn Header="Dob" Width="100" DisplayMemberBinding="{Binding Path=dob}" />
            <GridViewColumn Header="Age" Width="60" DisplayMemberBinding="{Binding Path=age}" />
        </GridView>
    </ListView.View>
</ListView>
ListView加载了数据,它的末尾似乎有一个空行。单击ListView的空行时,出现以下错误:

WpfApp.exe中发生了类型为“System.InvalidCastException”的第一次意外异常

其他信息:无法将“MS.Internal.NamedObject”类型的对象强制转换为“System.Data.DataRowView”类型

如果存在此异常的处理程序,则程序可以安全地继续


我犯了上述错误,如何解决?伙计们,我正处于学习阶段。

您应该使用as运算符确保SelectedItem属性实际返回System.Data.DataRowView,以避免在用户双击最后一行时出现异常:

    private void ListViewItem_DoubleClick(object sender, RoutedEventArgs e)
    {
        System.Data.DataRowView cusObj = lvCus.SelectedItem as System.Data.DataRowView;
        if (cusObj != null)
        {
            var myobj = cusObj.Row.ItemArray;
            txtCusID.Text = myobj[0].ToString();
            txtfn.Text = myobj[1].ToString();
            txtln.Text = myobj[2].ToString();
            txtdob.Text = myobj[3].ToString();
            txtage.Text = myobj[4].ToString();
        }
    }

您不能将空支票添加到所选项目吗?这可能是因为试图对空项进行强制转换。你的问题是什么?@Tim:我当然想找到一些解决方案来消除错误,这就是为什么发布错误的原因。@PrageethSaravanan:我在空检查之前遇到异常。你能给我举个例子吗?谢谢你的回答。我现在有了新的例外。WpfApp.exe中发生类型为“System.NullReferenceException”的未处理异常。其他信息:对象引用未设置为对象的实例。
    private void ListViewItem_DoubleClick(object sender, RoutedEventArgs e)
    {
        System.Data.DataRowView cusObj = lvCus.SelectedItem as System.Data.DataRowView;
        if (cusObj != null)
        {
            var myobj = cusObj.Row.ItemArray;
            txtCusID.Text = myobj[0].ToString();
            txtfn.Text = myobj[1].ToString();
            txtln.Text = myobj[2].ToString();
            txtdob.Text = myobj[3].ToString();
            txtage.Text = myobj[4].ToString();
        }
    }