この例では、チェックボックスを3回しか変更できません。編集モードに入る前に、チェックボックスが3回変更されたかどうかをチェックします。そうであれば、編集モードはキャンセルされます。コミットされたすべての編集で、カウンタはセルのTag
プロパティで更新されます。
dataGridView1.CellBeginEdit += (sender , e) =>
{
var dataGridViewCell = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
if (dataGridViewCell.ValueType == typeof(bool))
{
var checkedCount = dataGridViewCell.Tag is int ? (int)dataGridViewCell.Tag : 0;
e.Cancel = checkedCount == 3;
}
};
dataGridView1.CellEndEdit += (sender , e) =>
{
var dataGridViewCell = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
if (dataGridViewCell.ValueType == typeof(bool))
{
var checkedCount = dataGridViewCell.Tag is int ? (int)dataGridViewCell.Tag : 0;
dataGridViewCell.Tag = checkedCount + 1;
}
};
この例では唯一の3グリッド内のチェックボックスをチェックしallowes:
public partial class Form1 : Form
{
private int _checkedCount;
public Form1()
{
InitializeComponent();
dataGridView1.CellBeginEdit += (sender , e) =>
{
var dataGridViewCell = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
if (dataGridViewCell.ValueType == typeof(bool))
e.Cancel = _checkedCount == 3;
};
dataGridView1.CellValueChanged += (sender , e) =>
{
var dataGridViewCell = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
if (dataGridViewCell.ValueType == typeof(bool))
_checkedCount += 1;
};
}
}
NUM + = 1。あなたにブレークポイントを置き、本質的に(NUM> = 3の場合」で、num + = 1を交換したいです)theCheckbox.value = false; else num + = 1; "私は現時点ではMSの箱に載っていないので、正確な構文を教えることはできませんが、あなた自身でこれを発見する方法を学ぶ必要があります。実行がブレークポイントで停止したら、ctrl gを押して直接ウィンドウを開きます。 DataGridView1と入力してEnterキーを押すと、オブジェクトが表示されます。 DataGridView1.Rows [DataGridView1.CurrentCell.RowIndex] .Cells [0]をフォローアップし、利用可能なものを見てください。有望に見えるものがなければ、.Valueを追加してください。 .Valueをfalseに設定してみてください。 – NeedsAnswers
直接ウィンドウで再生することで、必要なプロパティを見つけることができます。このプロパティは、他のオブジェクトの見かけ上任意の数のレイヤに埋め込まれることがあります。 – NeedsAnswers