C# 重写 CheckedListBox

发布于 2024-08-17 04:10:28 字数 424 浏览 10 评论 0原文

我需要重写基本的 CheckedListBox 行为。

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

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

有什么想法吗?

谢谢。 。

例如:

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

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

不起作用,因为无论如何控件的默认行为已经执行此操作。

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

i need to override the base CheckedListBox behaviour.

it is possible to check and uncheck a CheckedListBox without any code attached to it.

i need to disable this behaviour so that i can implement custom code.

any ideas?

thanks.
.

for example:

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

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

does not work because the controls default behaviour already does this anyway.

hopefully you can understand my issue now.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

哀由 2024-08-24 04:10:28

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

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

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

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

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

You can create your own CheckedListBox by inheriting from the built-in class and overriding the relevant methods.

As I understand your question, you don't want the items to be selected when the user clicks them, you want to control the selection entirely from your code.

To do this, you can override the OnItemCheck method, and control the new value that is being set:

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

This can also be done by simply handling the ItemCheck event.

夏末染殇 2024-08-24 04:10:28

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

是的,我很傻!

ok i figured it out. i was seeing it wrong. i just handle for the checked state instead of defining it twice. once by the control second by me.

yes i was being silly!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文