C# 无法将类型 'System.Windows.Forms.ListViewItem' 转换为 'my app.Users' class

C# Cannot convert type 'System.Windows.Forms.ListViewItem' to 'my app.Users' class

我有一个 C# WinForms 程序访问 SQL 服务器并从中查询数据。我有两个主要的 classes:Users 包含可以登录应用程序的用户的数据类型,Products 再次包含可以查询的产品的数据类型。我还有一个 class,它包含访问 sql 服务器的方法。我创建了一个函数,将 sql 数据库中的用户查询到一个列表中,然后我将其加载到 ListView lsv_MangageUsers 中。我能够创建添加新用户和删除方法,但是当我开始创建修改用户方法时,我 运行 遇到了问题。 Visual Studio 说:

"Cannot convert type 'System.Windows.Forms.ListViewItem' to 'my app.Users' class".

我尝试将 Users class 中所选项目的值转换为修改方法并加载到新的表单控件中以允许用户对其进行修改。如果我以错误的顺序使用方法和函数,我深表歉意,我在 C# 中仍然是新手。任何帮助将不胜感激。

运行修改用户方法的按钮代码:

private void btn_ModifyUser_Click(object sender, EventArgs e)
{
    if (lsv_ManageUsers.FocusedItem.Index != -1)
    {
        UserNew userwindow = new UserNew((Users)lsv_ManageUsers.SelectedItems[0]);
        if (userwindow.ShowDialog() == DialogResult.OK)
        {
            LsvUsersRefresh();
            toolStripStatusLabel1.Text = "User successfully modified!";
        }
    }
}

lsv_ManageUsers.SelectedItems[0] 引用的项目是一个 ListViewItem,它不是您的 Users 项目之一,您不能只是从一个项目转换到另一个项目,因为它们是完全不同的东西。

如果您希望世界以这种方式运作,那么每个 ListViewItem 都有一个 Tag 属性,您可以随意将其用于任何您喜欢的目的。建议在将 ListViewItem 添加到列表时将 Users 项目添加到此 属性,然后您可以在点击处理程序中取消引用它。