private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            if (e.ColumnIndex == 1) //checkbox col
            {
                rightZeroCountsc = GetRightZeroCounts(CommonFunc.GetDbInt(dataGridView1.Rows[e.RowIndex].Cells[0].Value), out firstNotZeroNumc);
                if (rightZeroCountsc == 2) e.CellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
                else if (rightZeroCountsc == 3) e.CellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft;
                else
                {
                    e.CellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
                }
            }
        }
上面的是控制checkbox列位置的式样,但是选中某个checkbox后还是会跳到中间显示,如何解决这个问题?

解决方案 »

  1.   

    GridView本身就有控制列位置的顯示,不需要通過程式來設置
      

  2.   

    我要根据每行的数据不同控制checkbox显示位置的
      

  3.   

    不需要写在 cellformatting 事件里的,假设该列列名为col1,在form_load事件里写一次就行了:
    datagridview1.columns["col1"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
      

  4.   

    这问题,我最后的解决方法是这样的:
      if (e.ColumnIndex == 0)
                    {
                        dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.Alignment = DataGridViewContentAlignment.TopLeft;  //用这个而不是下面那行。
                    }
                    //e.CellStyle.Alignment = DataGridViewContentAlignment.BottomRight;