컬럼헤더에 체크박스를 추가하고, 이벤트를 추가했다면

체크박스 이벤트에

foreach (DataGridViewRow dgvRow in 그리드뷰네임.Rows)

{

         dgvRow.Cells["헤더네임"].Value = ((CheckBox)sender).Checked;

}



하게되면 선택한 경우 SelectAll또는 DeSelectAll이 된다


하지만, 체크박스에 EditBegin상태가 유지되고있다면

체크값이 변하지 않는다.


그리드뷰네임.EndEdit();


EndEdit를 해서 Edit모드를 종료 한 후 위 코드를 사용하면 정상적으로

모든 체크박스가 바뀐다.

블로그 이미지

SherryBirkin

,

DataGridView의 이벤트중 CellPainting 나 Load이벤트에


if (e.ColumnIndex == 0 && e.RowIndex == -1)

                {

                    e.PaintBackground(e.ClipBounds, false);


                    Point pt = e.CellBounds.Location;the cell


                    int nChkBoxWidth = 15;

                    int nChkBoxHeight = 15;

                    int offsetx = (e.CellBounds.Width - nChkBoxWidth) / 2;

                    int offsety = (e.CellBounds.Height - nChkBoxHeight) / 2;


                    pt.X += offsetx;

                    pt.Y += offsety;


                    CheckBox cb = new CheckBox();

                    cb.Size = new Size(nChkBoxWidth, nChkBoxHeight);

                    cb.Location = pt;

                    cb.Checked = true;

                    cb.CheckedChanged += new EventHandler(dgvCheckBox_CheckedChanged);


                    ((DataGridView)sender).Controls.Add(cb);


                    e.Handled = true;

                }


해당코드 입력

넣고자 하는 컬럼헤더에 Check박스위치를 계산해서 새로 그려주는 코드와 체크박스 이벤트 추가하는 코드임



블로그 이미지

SherryBirkin

,

DataGridVeiw이벤트에 EditingControlShowing추가

e.Control.KeyPress이벤트 연결


KeyPress와 연결한 함수에서


if (((DataGridViewTextBoxEditingControl)sender).Text.Length >= 제한할 길이 수 

  && ((DataGridViewTextBoxEditingControl)sender).SelectedText.Length <= 0)

      e.Handled = true;


SelectedTextLength는 블록 지정했을때 수정이 가능하게끔 하기 위함



블로그 이미지

SherryBirkin

,