我看到复选框有一个 CheckedChanged 事件。是否可以通过编程方式或用户实际检查复选框来判断它是否已更改?
我有一个大网格,用户可以在其中输入过滤器,或者使用复选框来提供一种提供常用过滤参数的“快速过滤器”。然后说他们去通过文本框修改过滤器,我正在检查我是否应该以编程方式(取消)检查 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 事件会因为在 CheckedChanged 事件发生时调用 UpdateFilter 方法而触发,这反过来可能导致 CheckedChange 再次发生,因为 ColumnFilterChanged 操纵复选框。