C#显示在Panel中窗体的有关问题

C#,显示在Panel中窗体的问题
两个窗体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事件
否则一创建,还没绑定,就先执行了