gpt4 book ai didi

c# - 如何禁用 ListBox 滚动条的标准上下文菜单?

转载 作者:行者123 更新时间:2023-11-30 20:49:13 24 4
gpt4 key购买 nike

我正在使用 Windows 窗体在 C# 中创建应用程序。我正在使用 ListBox 来显示一些数据。由于某些原因在这里解释太长,我想隐藏 ListBox 上滚动条的标准右键单击菜单(在这里滚动,向上滚动,向下滚动等)

此标准上下文菜单显示在每个控件的每个滚动条上。

有什么方法可以完全禁用它或用一个空的上下文菜单替换它?

最佳答案

Winforms 几乎总能使这些类型的调整非常容易实现。您需要对 Windows 的工作原理有最低限度的了解,Petzold 的“Windows 编程”中的前几章会让您受益匪浅。并利用 Visual Studio 附带的 Spy++ 实用程序,它向您显示 Windows 发送到窗口的消息。

当您右键单击滚动条时,您会看到它发送 WM_CONTEXTMENU 消息,这是触发上下文菜单的消息。您所要做的就是确保 native ListBox 控件看不到该消息。那是一条线。向您的项目添加一个新类并复制/粘贴如下所示的代码。编译。并将新控件从工具箱的顶部拖到您的窗体上,替换旧的列表框。 Presto-chango,不再有上下文菜单。

using System;
using System.Windows.Forms;

class MyListBox : ListBox {
protected override void WndProc(ref Message m) {
// Intercept WM_CONTEXTMENU
if (m.Msg != 0x7b) base.WndProc(ref m);
}
}

关于c# - 如何禁用 ListBox 滚动条的标准上下文菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23888266/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com