C# 在C中使用选定的DataGridView行#

C# 在C中使用选定的DataGridView行#,c#,object,datagridview,C#,Object,Datagridview,是否有方法将datagridview中当前选定的行强制转换/转换为自定义对象 例如,我试图将所选行强制转换为Client类型的对象,但是,我无法使用此方法执行此操作 DataGridViewSelectedRowCollection rows = dgvClient.SelectedRows; foreach (DataGridViewRow r in rows) { DataRow myRow = (r.DataBoundItem as DataRowView).Row; Cl

是否有方法将datagridview中当前选定的行强制转换/转换为自定义对象

例如,我试图将所选行强制转换为Client类型的对象,但是,我无法使用此方法执行此操作

DataGridViewSelectedRowCollection rows = dgvClient.SelectedRows;
foreach (DataGridViewRow r in rows)
{
    DataRow myRow = (r.DataBoundItem as DataRowView).Row;
    Client current = (Client)myRow;
}

否,因为
DataRow
Client
没有关系,即Client不是从DataRow派生的。
编辑:我的观点是正确的,您可以提供@Anand解释的明确的铸造方法。如果
客户端
源无法访问,我建议这样做。否则

我在VB.Net中有一个项目,它使用列表作为DataGridView的数据源。有趣的是,我能够将所选行转换为
SomeEntity

我建议提供一个构造函数,在本例中是为
客户机
提供的,它接受数据行作为参数。从行中指定值并使用它完成:

Client current = new Client(myRow);

还可以使用隐式和显式运算符 例如


类似地,您可以重载隐式。使用隐式运算符,转换将自动进行,而不进行强制转换

DataGridViewRow不会从客户端继承,那么为什么您可以强制转换到它呢?您不能将某个内容从原来的内容强制转换为现在的内容。您应该发布您正在使用的DataGrid(Toolkit或.NET 4.0)本质上,这就是我建议在类中使用一个构造函数,将DataRow作为参数+1表示显式运算符,但…;)
class Client
{
   public static explicit operator Client(DataRow dr)
   {
      // code to convert from dr to Client
   }
}

Client current = (Client)myRow;