C# 在C中使用选定的DataGridView行#
是否有方法将datagridview中当前选定的行强制转换/转换为自定义对象 例如,我试图将所选行强制转换为Client类型的对象,但是,我无法使用此方法执行此操作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
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;