通过从 CheckBox 继承来创建自定义控件,并在其构造函数中为其创建 Click 处理程序。在该 Click 处理程序中,放置以下代码:
((CheckBox)sender).Checked = !((CheckBox)sender).Checked;
这是一个完整的例子。
对于 Windows 窗体:
namespace System.Windows.Forms
{
public class UnChangingCheckBox : System.Windows.Forms.CheckBox
{
public UnChangingCheckBox()
{
this.Click += new EventHandler(UnChangingCheckBox_Click);
}
void UnChangingCheckBox_Click(object sender, EventArgs e)
{
((CheckBox)sender).Checked = !((CheckBox)sender).Checked;
}
}
}
对于 WPF:
namespace System.Windows.Controls
{
public class UnchangingCheckBox : System.Windows.Controls.CheckBox
{
public UnchangingCheckBox()
{
this.Click += new System.Windows.RoutedEventHandler(UnchangingCheckBox_Click);
}
void UnchangingCheckBox_Click(object sender, System.Windows.RoutedEventArgs e)
{
if (((CheckBox)sender).IsChecked.HasValue)
((CheckBox)sender).IsChecked = !((CheckBox)sender).IsChecked;
}
}
}
如果将上述代码放在 Windows 窗体或 WPF 项目中的新类中,它们将在工具箱中显示为新工具。然后,您需要做的就是将新的“UnchangedCheckBox”控件拖到您使用 CheckBox 的表单上。您无需在表单上进行任何编码。
使用这种方法,您的代码仍然可以对 CheckBox 执行所有操作(设置其值等)。只有在不影响视觉风格的情况下禁用了用户交互。