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