[C#][DataGridView]チェックボックス付列の追加
チェックボックス付の列をDataGridViewに追加する
DataGridViewCheckBoxColumnクラスのオブジェクトをDataGridViewに追加する
private void Form1_Load(object sender, EventArgs e)
{
DataGridViewCheckBoxColumn column = new DataGridViewCheckBoxColumn();
// 三項のチェックボックスにするには、ThreeStateプロパティをtrueにする
column.ThreeState = true;
column.Name= "CheckBox";
dataGridView1.Columns.Add(column);
}
チェックボックスの状態の変化を取得する
チェックボックスの状態の変化は、DataGridViewのCellValueChangedイベントで取得する。
イベントが飛んでくるタイミングは、チェック状態の変更後、フォーカスが外れたタイミングとなる。
チェック時即座にイベントを飛ばすためには、CurrentCellDirtyStateChangedイベントを
ハンドルし、編集をコミットさせればよい。
(参考サイト )
private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (dataGridView1.Columns["CheckBox"].Equals(dataGridView1.Columns[e.ColumnIndex]))
{
CheckState state = (CheckState)dataGridView1.Rows[e.RowIndex].Cells["CheckBox"].Value;
MessageBox.Show(state.ToString());
}
}
[C#][DataGridView]行の高さを固定する
行の高さを固定する
// DataGridViewTriStateのenumを変更する。
dataGridView1.RowTemplate.Resizable = DataGridViewTriState.False;
[C#][DataGridView]指定の行・列を固定する
指定の行・列を固定する
Excelの「セル固定」と同様な処理をするために、Frozenプロパティにtrueを設定する。
// 列を固定する dataGridView1.Columns[0].Frozen = true; // 行を固定する dataGridView1.Rows[0].Frozen = true;
[C#][DataGridView]指定した行をソート対象外にする
SortCompareイベントをハンドルする。
/// SortCompare
private void dataGridView1_SortCompare(object sender, DataGridViiewSortCompareEventArgs e)
{
// rowIndex:ソート対象外とする行インデックス
int rowIndex = 0;
if ((rowIndex == e.RowIndex1) || (rowIndex == e.RowIndex2))
{
e.Handled = true;
}
}
[C#]DataGridViewのちらつき防止2
DataGridViewのちらつきを防止する②
前回
からの続き。
有効にするための方法2
Reflectionを利用する。
以下のように、リフレクションを使用することでも解消できる。
やっていることはDoubleBufferedプロパティを有効にするということで同じ。
using System;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Type type = typeof(DataGridView);
System.Reflection.PropertyInfo propInfo =
type.GetProperty("DoubleBuffered", System.Reflection.BindingFlags.Instance |
System.Reflection.BindingFlags.NonPublic);
propInfo.SetValue(dataGridView1, true, null);
}
}
}