C#覆盖CheckedListBox

时间:2010-01-09 14:45:04

标签: c# winforms checkedlistbox

我需要覆盖基础的CheckedListBox行为。

可以检查并取消选中CheckedListBox,而不附加任何代码。

我需要禁用此行为,以便我可以实现自定义代码。

任何想法?

感谢。

例如:

if(ListenCheckedListBox.GetItemChecked(0)) {     ListenCheckedListBox.SetItemChecked(0,false); }

if(!ListenCheckedListBox.GetItemChecked(0)) {     ListenCheckedListBox.SetItemChecked(0,true); }

不起作用,因为控件默认行为无论如何都已经这样做了。

希望你现在能理解我的问题。

2 个答案:

答案 0 :(得分:0)

您可以通过继承内置类并重写相关方法来创建自己的CheckedListBox。

据我了解您的问题,您不希望在用户点击它们时选择这些项目,您希望完全从您的代码中控制选择。

为此,您可以覆盖OnItemCheck方法,并控制正在设置的新值:

public class CheckedListBoxEx : CheckedListBox
{
    protected override void OnItemCheck(ItemCheckEventArgs ice)
    {
        ice.NewValue = ice.CurrentValue;
    }
}

这也可以通过简单地处理ItemCheck事件来完成。

答案 1 :(得分:0)

好吧,我明白了。我看错了。我只处理检查状态而不是定义它两次。一次由控制第二次由我。

是的,我很傻!

相关问题