2017-08-28 7 views
0

選択時のヘッダーチェックボックスは、チェックボックス列のすべてのチェックボックスを選択します。ヘッダーチェックボックスを選択した後、データが更新されると、データはその上にマークされたまま表示されます。 [OK]ボタンをクリックすると次のコードが表示され、ヘッダー付きのDataGridviewでデータを読み込みます。チェックボックスと各行のすべてのチェックボックスが表示されます。次に、すべての行のすべてのチェックボックスを選択するヘッダチェックボックスを選択します。 OKボタンをもう一度クリックすると、データはリロードされますが、ヘッダチェックボックスのチェックマークはチェックされずに表示されます。データをリフレッシュした後にdataGridViewのヘッダチェックボックスを解除する方法C#?

 private void buttonOk_Click(object sender, EventArgs e) 
    { 
     LoadDataGridView(); 

     CheckBox ckBoxHeader = new CheckBox(); 

     //Get the column header cell bounds 
     Rectangle rect = datagridview1.GetCellDisplayRectangle(0, -1, true); 
     rect.Y = 3; 

     //align header check box in the middle center at rect.X = 82 
     rect.X = (rect.Location.X + (rect.Width/2)) - 10 ; 

     ckBoxHeader.Size = new Size(18, 18); 
     //Change the location of the CheckBox to make it stay on the header 
     ckBoxHeader.Location = rect.Location; 
     datagridview1.Columns[0].Frozen = true; 

     ckBoxHeader.CheckedChanged += ckBoxHeader_CheckedChanged; 

     //Add the CheckBox into the DataGridView 
     datagridview1.Controls.Add(ckBoxHeader); 
    } 


    private void ckBoxHeader_CheckedChanged(object sender, EventArgs e) 
    { 
     for (int j = 0; j <= datagridview1.RowCount - 1; j++) 
     { 
      datagridview1[0, j].Value = ((CheckBox)sender).Checked; 
     } 
     datagridview1.EndEdit(); 

    } 
+0

をクリックしてください遠くに、あなたを助けることは不可能です。あなたのためのコードを一から書くことはできません。 –

+0

コードで話す。 –

+0

上記の@ Keyur Patelと@ M Adeel Khalidのヒントがあれば、コードを追加しました。ありがとうございました! – Krish

答えて

0

ヘッダーチェックボックスの選択を解除するという問題を解決しました。 headerCheckBox.Checked = falseにするには、上記のコードを次のように書き直す必要があります。作業する: Loadイベントコード -

private void Form1_Load(object sender, EventArgs e) 
    { 
     addHeaderCheckBox(); 
     changeDataGridViewColumnReadonly(); 
     datagridview1.Columns[0].Frozen = true;    
    } 

ロードDataGridViewのメソッドのコード -

 private void LoadDataGridView() 
    { 
     DataTable dt = new DataTable(); 
     string WhereClause = " WHERE NO LIKE '" + textBoxNumber.Text.ToString().Substring(0,12) + "%' AND (DATE_TIME_START BETWEEN " + General.BuildOraDateString(dateTimePickerStart.Value) + " AND " + General.BuildOraDateString(dateTimePickerEnd.Value) + ") AND STATUS_IND = 'ST' "; 

     dt = Unit.GetData(WhereClause); 
     this.datagridview1.Refresh(); 
     this.datagridview1.DataSource = dt; 

     headerCheckBox.Checked = false; 

     headerCheckBox.MouseClick += new 
     MouseEventHandler(headerCheckBox_MouseClick); 

     datagridview1.CellValueChanged += 
     new DataGridViewCellEventHandler(datagridview1_CellValueChanged); 

     datagridview1.CurrentCellDirtyStateChanged += 
      new EventHandler(datagridview1_CurrentCellDirtyStateChanged); 

     datagridview1.CellPainting += 
      new 
     DataGridViewCellPaintingEventHandler(datagridview1_CellPainting); 
    } 

[OK]ボタンはあなたがそうしようとしたかを示すために、任意のコードがなければevent-

 private void buttonOk_Click(object sender, EventArgs e) 
    { 
     LoadDataGridView(); 
     totalCheckBoxes = dgvBaleDisposition.RowCount; 

    } 
関連する問題