将 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 之后,我需要找到一个可以做到这一点的地方。

将 DataGridViewRow 强制转换为 CustomDataGridViewRow

当你初始化你的DataGridView时,你必须指定一个RowTemplate

dataGridView1.RowTemplate = new CustomDataGridViewRow();

然后,在添加行时,将自动创建CustomDataGridViewRow,并且您不必处理RowsAdded事件。

相关文章:
  • 没有找到相关文章