3

以下のように2つのckecbox(エラーと有効)があります

ここに画像の説明を入力

「有効にする」チェックボックスをオフにすると、対応する「エラー」チェックボックスがグレー表示されます。

ここに画像の説明を入力

私は以下のように試しましたが、有効または無効のプロパティはありません

    void dgRulesMaster_CellContentClick(object sender, DataGridViewCellEventArgs e)
    {
      if (e.RowIndex > -1 & e.ColumnIndex == 3)
      {
   var editingCellFormattedValue = Convert.ToBoolean(((DataGridViewCheckBoxCell)dgRulesMaster.Rows[dgRulesMaster.CurrentRow.Index].Cells[3]).EditingCellFormattedValue);

     if (editingCellFormattedValue == false)
     {
          dgRulesMaster[2, e.RowIndex].ReadOnly = true;
     }
  }    
}
4

1 に答える 1

2

繰り返しますが、カスタム ペインティングを使用します (私はそれが大好きです :)。ReadOnly の場合、Cell は Disable のように見えるはずです。もちろん、にのみ適用されDataGridViewCheckBoxColumnます。私のコードは次のとおりです。

void dgRulesMaster_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
  if (e.RowIndex > -1 & e.ColumnIndex == 3)
  {
    var editingCellFormattedValue = Convert.ToBoolean(((DataGridViewCheckBoxCell)dgRulesMaster.Rows[dgRulesMaster.CurrentRow.Index].Cells[3]).EditingCellFormattedValue);

    if (editingCellFormattedValue == false)
    {
      dgRulesMaster[2, e.RowIndex].ReadOnly = true;
      dgRulesMaster.InvalidateCell(2,e.RowIndex);
    }
  }   
 } 
 //And here is the CellPainting event handler for your dataGridView
 private void dgRulesMaster_CellPainting(object sender, DataGridViewCellPaintingEventArgs e){
    if (e.ColumnIndex > -1 && e.RowIndex > -1 && 
       dgRulesMaster.Columns[e.ColumnIndex] is DataGridViewCheckBoxColumn && dgRulesMaster[e.ColumnIndex, e.RowIndex].ReadOnly)
        {
            Size checkSize = CheckBoxRenderer.GetGlyphSize(e.Graphics, System.Windows.Forms.VisualStyles.CheckBoxState.CheckedNormal);                
            e.Handled = true;
            e.PaintBackground(e.CellBounds, true);
            if (e.Value != null)
            {
                CheckBoxRenderer.DrawCheckBox(e.Graphics, new Point(e.CellBounds.X + e.CellBounds.Width / 2 - checkSize.Width / 2, e.CellBounds.Y + e.CellBounds.Height / 2 - checkSize.Height / 2), 
               (bool)e.Value ? System.Windows.Forms.VisualStyles.CheckBoxState.CheckedDisabled : System.Windows.Forms.VisualStyles.CheckBoxState.UncheckedDisabled);                    
            }
        }
  }    
于 2013-06-08T06:50:14.003 に答える