C#显示在Panel中窗体的有关问题
C#,显示在Panel中窗体的问题
两个窗体A、B
B窗体加载在A窗体的Panel中
B窗体中有DataGridView,想根据条件动态加载单元格的颜色
加载窗体的语句为
加载单元格颜色的语句为
问题:如果B窗体显示在A窗体的Panel中,无法实现动态加载颜色
如果B窗体单独显示的话,就可以实现动态加载颜色,这是为什么?
------解决方案--------------------
你用这个试试
------解决方案--------------------
目测加载单元格颜色的语句写错地方了
于是改变了颜色后,又将窗体放到panel里,导致刷新了,颜色就不见了
------解决方案--------------------
应该将代码写到窗体的shown事件里,而不是load事件
否则一创建,还没绑定,就先执行了
两个窗体A、B
B窗体加载在A窗体的Panel中
B窗体中有DataGridView,想根据条件动态加载单元格的颜色
加载窗体的语句为
A.panel_main.Controls.Clear();
B b = new B();
b.TopLevel = false;
A.panel_main.Controls.Add(b);
b.Show();
加载单元格颜色的语句为
for (int i = 0; i < dataGridView_sp.Rows.Count; i++)
{
if (dataGridView_sp.Rows[i].Cells[8].Value.ToString().Trim() == "是")
{
dataGridView_sp.Rows[i].DefaultCellStyle.BackColor = Color.DarkSeaGreen;
}
}
问题:如果B窗体显示在A窗体的Panel中,无法实现动态加载颜色
如果B窗体单独显示的话,就可以实现动态加载颜色,这是为什么?
------解决方案--------------------
private void dataGridView_sp_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (e.ColumnIndex == 8)
{
if (e.Value == "是")
{
dataGridView_sp.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.DarkSeaGreen;
}
}
}
你用这个试试
------解决方案--------------------
目测加载单元格颜色的语句写错地方了
于是改变了颜色后,又将窗体放到panel里,导致刷新了,颜色就不见了
------解决方案--------------------
应该将代码写到窗体的shown事件里,而不是load事件
否则一创建,还没绑定,就先执行了