我正在尝试使用样式颜色等格式化DataGridView.DGV在窗体启动时加载(通过buildGrid方法),如构造函数的代码中所示:
public Report1(DataSet dsReport1, string sDateRep)
{
InitializeComponent();
sDate = sDateRep;
dsReportGrid = dsReport1;
orgDataset();
buildGrid();
}
Run Code Online (Sandbox Code Playgroud)
这是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);
}
}
Run Code Online (Sandbox Code Playgroud)
它加载DGV很好,问题是它不会像我希望的那样给单元上色,它只是让它变黑.
有趣的是,当我通过任何其他方法调用buildGrid时,在构造函数之外,它会为它着色!例如:
private void Form1_Resize(object sender, EventArgs e)
{
buildGrid();
}
Run Code Online (Sandbox Code Playgroud)
为什么会这样?如何让它从一开始就为细胞着色?
谢谢!
问题是,数据绑定尚未完成您的constructur所以网格中的任何改变都去掉里面(我没有真正100%肯定,为什么他们被删除,因为行和单元格在那里,但是这是它的工作原理) .
放置这种格式的正确位置是在DataBindingComplete事件处理程序中 - 在数据绑定完成之后但在绘制网格之前引发该事件.
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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2171 次 |
| 最近记录: |