我在父窗体里面调用frmUserManage窗体 frmUserManage fUM = new frmUserManage();
 fUM.MdiParent = this;//设为子窗体
 fUM.Show();
如果设为子窗体的frmUserManage定义的dataGridView单元格色背景色丢失,不会为什么?不设为子窗体的话就OK.有什么办法可以解决,既设成子窗体也有dataGridView单元格背景色呢

解决方案 »

  1.   

    你是重绘的还是?
    如果是 遍历循环 假的 fontcolor 不行的
    最好 是 在pant事件里面写
      

  2.   

    看下把属性里的BaskgroundColor改成AliceBlue有用吗?
      

  3.   


       foreach (DataGridViewRow dgvRow in dgvUserList.Rows)//遍历所有行
                {
                    if (dgvRow.Index % 2 == 0)//判断是否是偶数行
                    {
                        //设置偶数行颜色
                        dgvUserList.Rows[dgvRow.Index].DefaultCellStyle.BackColor =Color.Azure;
                    }
                    else//奇数行
                    {
                       //设置奇数行颜色
                     dgvUserList.Rows[dgvRow.Index].DefaultCellStyle.BackColor = Color.LightPink;
                  }
                }设置方法是这样的.写在窗体加载事件里面
      

  4.   

    你这种写法的话需要将你的那个改变行颜色的代码写在shown事件中。
    假设form2是子窗体的话
    private void Form2_Shown(object sender, EventArgs e)
            {
                foreach (DataGridViewRow dgvRow in this.dataGridView1.Rows)//遍历所有行
                {
                    if (dgvRow.Index % 2 == 0)//判断是否是偶数行
                    {
                        //设置偶数行颜色
                        dataGridView1.Rows[dgvRow.Index].DefaultCellStyle.BackColor = Color.Azure;
                    }
                    else//奇数行
                    {
                        //设置奇数行颜色
                        dataGridView1.Rows[dgvRow.Index].DefaultCellStyle.BackColor = Color.LightPink;
                    }
                }
            }
      

  5.   


    我把代码COPY到pant事件里面提示错误.
    这行提示"dgvUserList.Rows[dgvRow.Index].DefaultCellStyle = Color.Azure;
    "错误 2 无法将类型“System.Drawing.Color”隐式转换为“System.Windows.Forms.DataGridViewCellStyle” D:\源码\test\SystemSetting\frmUserManage.cs 57 71 SystemSetting
      

  6.   

      因为是子窗体加载,所以子窗体在load后会再执行一次show方法,而你的又是用代码动态改变行背景。所以在子窗体执行到show方法时你动态代码改变的颜色又被datagridview内置show方法给重置回去了。你可以测试一下,是否是先执行load方法,在执行show方法。然后你应该就能明白了。