In diesem Beispiel können Kontrollkästchen nur dreimal geändert werden. Bevor Sie in den Bearbeitungsmodus gehen, wird geprüft, ob das Kontrollkästchen dreimal geändert wurde. Wenn dies der Fall ist, wird der Bearbeitungsmodus abgebrochen. Bei jedem Commit wird ein Zähler in der Tag
Eigenschaft der Zelle aktualisiert.
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;
}
};
Dieses Beispiel allowes nur 3 Kontrollkästchen im Netz geprüft:
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;
};
}
}
einen Breakpoint Setzen Sie auf num + = 1. Sie im Wesentlichen num + = 1 mit „if (num> = 3 ersetzt werden soll) theCheckbox.value = false; else num + = 1; " Ich bin momentan nicht in einer MS-Box, daher kann ich Ihnen nicht die genaue Syntax geben, aber Sie müssen lernen, wie Sie das selbst herausfinden können. Wenn die Ausführung am Haltepunkt gestoppt wurde, drücken Sie Strg, um das nächste Fenster zu öffnen. Geben Sie DataGridView1 ein und drücken Sie die Eingabetaste. Sie sehen das Objekt. Verfolgen Sie DataGridView1.Rows [DataGridView1.CurrentCell.RowIndex] .Cells [0] und sehen Sie sich an, was verfügbar ist. Wenn nichts vielversprechend aussieht, addiere .Value. Versuchen Sie, .Value auf false zu setzen. – NeedsAnswers
Indem Sie im unmittelbaren Fenster herumspielen, können Sie die Eigenschaft finden, die Sie benötigen, die manchmal in einer scheinbar willkürlichen Anzahl von Schichten anderer Objekte vergraben wird. – NeedsAnswers