Я вижу, что флажки имеют событие CheckedChanged. можно ли определить, было ли оно изменено программно или пользователем, действительно проверяющим флажок?
У меня есть большая сетка, в которой пользователь может ввести фильтр, или использовать флажки для своего рода "быстрого фильтра", который предлагает общие параметры фильтрации. Затем скажите, что они идут и меняют фильтр через текстовое поле, я проверял, должен ли я программно (un) проверять элементы управления CheckBox, чтобы он отражал фильтр в текстовом поле.
private void genericCheckbox_CheckedChanged(object sender, EventArgs e)
{
UpdateFilter();
}
private void UpdateFilter()
{
if (gdcSVNDefaultView.RowCount == 0)
return;
gdcSVNDefaultView.ActiveFilterString = BuildTableFilter();
gdcSVNDefaultView.BestFitColumns();
}
private void gdcSVNDefaultView_ColumnFilterChanged(object sender, EventArgs e)
{
lblTotalFileCount.Text = gdcSVNDefaultView.RowCount.ToString();
if (gdcSVNDefaultView.ActiveFilterString.Contains("Normal"))
cheNormalFiles.Checked = true;
else
cheNormalFiles.Checked = false;
if (gdcSVNDefaultView.ActiveFilterString.Contains("bin") ||
gdcSVNDefaultView.ActiveFilterString.Contains("obj"))
cheBinObjFolders.Checked = true;
else
cheBinObjFolders.Checked = false;
}
С некоторыми очень легкими испытаниями, это, кажется, работает так, как я хочу. Но я боюсь, что существует какой-то случай с "бесконечным циклом", в котором событие ColumnFilterChanged будет срабатывать из-за вызова метода UpdateFilter при возникновении события CheckedChanged, что, в свою очередь, может привести к тому, что CheckedChange произойдет снова, поскольку ColumnFilterChanged управляет флажками.