2016-03-23 95 views
1

このようにチェックボックスのサイズが変わることがあります。DatagridviewCheckboxCellでcheckBoxサイズを変更する方法

checkBox1.Size = new Size(10, 10); 

私はDataGridViewCheckBoxColumnでのDataGridViewのチェックボックスのサイズを変更したいと私はDatagridviewCheckboxCellを継承しようとしましたが、これまでと同じよう行うにはどのような方法を発見しました。あなたがControlPaint classの多くの便利な方法のいずれかを使用する必要がありますあなたのマシンの現在のスタイルでシステムのコントロールを描画する

class DGCBC : DataGridViewCheckBoxColumn 
{ 
    public DGCBC() 
    { 
     this.CellTemplate = new DatagridviewCheckboxCustomCell(); 
    } 

    class DatagridviewCheckboxCustomCell : DataGridViewCheckBoxCell 
    { 
     public int row_index { get; set; } 
     /// <summary> 
     /// constructor 
     /// </summary> 
     /// 
     public DatagridviewCheckboxCustomCell() 
     { 
     } 

     protected override void Paint(Graphics graphics, Rectangle clipBounds, Rectangle cellBounds, int rowIndex, DataGridViewElementStates elementState, 
     object value, object formattedValue, string errorText, DataGridViewCellStyle cellStyle, DataGridViewAdvancedBorderStyle advancedBorderStyle, 
     DataGridViewPaintParts paintParts) 
     { 
      *//I tried many way in there,but it's not work* 
      base.Paint(graphics, clipBounds, cellBounds, rowIndex, elementState, value, formattedValue, errorText, cellStyle, advancedBorderStyle, paintParts); 
     } 

    } 
} 
+0

あなたがしようとしたコードを掲示することがあります。 – Shanid

+0

申し訳ありませんが、私はオーバーライドペイントが間違った方向に思えるので、投稿していないと思います。 – Jason

+0

これをチェックしてください:http://stackoverflow.com/questions/10117477/how-to-change-checkbox-size-in-datagridview-winform – princevezt

答えて

1

。ここで

Panelに3 Checkboxesを描画する例です。もちろん

enter image description here

private void panel1_Paint(object sender, PaintEventArgs e) 
{ 
    ControlPaint.DrawCheckBox(e.Graphics, 11, 11, 22, 22, ButtonState.Checked); 
    ControlPaint.DrawCheckBox(e.Graphics, 11, 44, 33, 33, ButtonState.Checked); 
    ControlPaint.DrawCheckBox(e.Graphics, 11, 88, 44, 44, ButtonState.Checked); 
} 

あなたが希望するサイズとあなたの座標を使用するようにCellPaintingイベントでこれを適応する必要があります細胞!ここで

CheckBoxでセルを塗りつぶし、かなり簡単な例です:

enter image description here

private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e) 
{ 
    if (e.ColumnIndex == 1 && e.RowIndex >= 0) 
    { 
     e.PaintBackground(e.CellBounds, true); 
     ControlPaint.DrawCheckBox(e.Graphics, e.CellBounds.X + 1, e.CellBounds.Y + 1, 
      e.CellBounds.Width - 2, e.CellBounds.Height - 2, 
      (bool) e.FormattedValue ? ButtonState.Checked : ButtonState.Normal); 
     e.Handled = true; 
    } 

あなたは、あなたのニーズに合ったサイズを見つけることになるでしょう。..

あなたはButtonStateを組み合わせることができます。ですから、ButtonState.Checked | ButtonState.Flatなどを書くことができるのDataGridView CheckBoxCellsのデフォルトであるフラットな外観を達成するために..:

ControlPaint.DrawCheckBox(e.Graphics, 11, 11, 22, 22, ButtonState.Checked); 
ControlPaint.DrawCheckBox(e.Graphics, 11, 44, 33, 33, ButtonState.Checked | ButtonState.Flat); 
ControlPaint.DrawCheckBox(e.Graphics, 11, 88, 44, 44, ButtonState.Checked | ButtonState.Flat | ButtonState.Inactive); 

enter image description here

+0

あなたの助けをありがとう、それはwoks! – Jason

+0

あなたが答えに満足しているなら、[accepting](http://stackoverflow.com/help/accepted-answer)それを考えてみてください.. ..! - あなたはこれを決してしなかったことが分かります:答えの投票の下の左上の(目に見えない)チェックマークに行き、それをクリックしてください!それは緑色に変わり、私たちに少しの評判をもたらします。 – TaW

関連する問題