实际上,在WinForms项目(VS 2010,C#,.NET 4.5)上,我在表单中构建了一个矩阵(10x10)。每个元素都由一个可以"检查"或"未检查"的控件表示。每个元素的状态完全独立于另一个元素。
理想的解决方案是使用复选框。不幸的是,客户端想要不同的外观,例如RadioButton。我可以使用RadioButton,将它们中的每一个放在一个专用组中,如果元素已经被选中,则添加一个事件侦听器以在单击时取消选中。。。就外观问题来说,差不多了!
我不能覆盖CheckBox类的一些呈现方法吗?(无论如何,这是整个应用程序中我使用此控件的唯一位置)
注意:控件是在运行时从类MyClass:CheckBox安装的。
如果需要使其看起来像单选按钮,请使用单选按钮。您需要将它们的AutoCheck属性设置为False,以使它们像复选框一样工作,并为它们提供一个通用的事件处理程序:
private void radioButtons_Click(object sender, EventArgs e) {
var button = (RadioButton)sender;
button.Checked = !button.Checked;
}
毫不犹豫地指出,这是非常糟糕的UI设计。