gpt4 book ai didi

datagridview - 加载时格式化 DataGridView 时出现问题

转载 作者:行者123 更新时间:2023-12-04 04:48:10 29 4
gpt4 key购买 nike

我正在尝试格式化 DataGridView,使用样式颜色等。DGV 在表单启动时加载(通过 buildGrid 方法),如构造函数代码中所示:

    public Report1(DataSet dsReport1, string sDateRep)
{
InitializeComponent();
sDate = sDateRep;
dsReportGrid = dsReport1;
orgDataset();
buildGrid();
}

这是 DGV 的代码:

    private void buildGrid()
{
try
{
dataGridView1.DataSource = dsReportGrid.Tables[0];
Controls.Add(dataGridView1);
dataGridView1.Visible = true;
dataGridView1.Rows[2].Cells[1].Style.ForeColor = Color.Red;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

它可以很好地加载 DGV,问题是它不会像我希望的那样为单元格着色,它只是将其保留为黑色。

有趣的是,当我通过构造函数之外的任何其他方法调用 buildGrid 时,它确实会为其着色!例如:

    private void Form1_Resize(object sender, EventArgs e)
{

buildGrid();
}

为什么会发生这种情况?我怎样才能让它从一开始就给单元格着色?

谢谢!

最佳答案

问题是数据绑定(bind)尚未在构造器内完成,因此对网格的任何更改都被删除(我实际上并不是 100% 确定为什么它们被删除,因为行和单元格在那里,但这就是它的工作原理)。

放置此类格式的正确位置是在 DataBindingComplete 事件处理程序中 - 该事件在数据绑定(bind)完成后、绘制网格之前引发。

public Report1(DataSet dsReport1, string sDateRep)
{
InitializeComponent();
sDate = sDateRep;
dsReportGrid = dsReport1;
orgDataset();

dataGridView1.DataSource = dsReportGrid.Tables[0];
Controls.Add(dataGridView1);
dataGridView1.Visible = true;

dataGridView1.DataBindingComplete += dataGridView1_DataBindingComplete;
}

void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
dataGridView1.Rows[2].Cells[1].Style.ForeColor = Color.Red;
}

关于datagridview - 加载时格式化 DataGridView 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6759395/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com