2

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

可以在没有附加任何代码的情况下检查和取消选中 CheckedListBox。

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

有任何想法吗?

谢谢。.

例如:

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

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

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

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

4

2 回答 2

0

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

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

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

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

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

于 2010-01-09T14:52:47.517 回答
0

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

是的,我很傻!

于 2010-01-09T16:50:44.377 回答