将 DataGridViewRow 强制转换为 CustomDataGridViewRow
本文关键字:CustomDataGridViewRow 转换 DataGridViewRow | 更新日期: 2023-09-27 18:34:08
目前,我有一个绑定到DataTable的DataGridView。
dataGridView.SetDataSource(datatable);
数据表是从适配器填充的。
adapter.Fill(datatable);
我需要向来自另一个查询的 DataGridView 添加其他行。列是相同的。我需要区分来自当前数据表和第二个数据表的行。为此,我将向 2 个查询中的每个查询添加一个新字段以进行识别。我创建了一个新的类CustomDataGridViewRow,它派生自DataGridViewRow,并更改了它的外观属性之一(颜色,字体,样式等(,以便允许用户区分它们。
public class CustomDataGridViewRow : DataGridViewRow
{
// set some appearance properties in order to the user to differ between the 2 type of rows
}
由于目前,DataGridView 绑定到 DataTable,我不希望更改此行为。我虽然订阅了 RowAdd 事件并根据标识列信息,将 DataGridViewRow 强制转换为 CustomDataGridViewRow。我尝试了以下内容,但我不确定如何使其工作。
private void dataGridView_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
var row = (sender as DataGridView).Rows[e.RowIndex] as CustomDataGridViewRow;
}
有没有办法将 DataGridViewRow 强制转换为 CustomDataGridViewRow?
更新:我观察到 RowsAdd 事件没有触发,因为我没有使用 Rows.Add 方法添加行。所以这是另一个问题。在找到一种方法将 DataGridViewRow 转换为 CustomDataGridViewRow 之后,我需要找到一个可以做到这一点的地方。
当你初始化你的DataGridView
时,你必须指定一个RowTemplate
:
dataGridView1.RowTemplate = new CustomDataGridViewRow();
然后,在添加行时,将自动创建CustomDataGridViewRow
,并且您不必处理RowsAdded
事件。