关于panel控件禁用鼠标滚轮的问题
问题背景
在.NET6.0下关于winform的软件开发时,放了一个Panel控件,他是可以在其中的子控件过多的时候自动生成滚动条的,但是这个滚动条默认可以用鼠标滚轮控制,导致了一些问题。
现在需要禁止鼠标滚轮的对该Panel的操作,找了很多方法都不行,因为底层似乎默认Panel拥有鼠标滚轮控制滚动条的功能。
通过重写控件屏蔽鼠标滚轮事件
尝试了一阵,最后决定重写该控件,代码很简单:
public class MyPanel : Panel
{
protected override void WndProc(ref Message m)
{
if (m.Msg != 0x020A)
{
base.WndProc(ref m);
}
}
}
然后去dlg初始化的地方,把Panel控件改成MyPanel类型就行:
panel1 = new MyPanel();
///
///...
///
private MyPanel panel1;
这样会导致一个问题,就是你的设计器里面就看不见这个Panel了,是一片空白,因为是你重写的MyPanel,控件列表里没有的
如果觉得有必要,可直接创建一个新的控件,添加,就能看见了
我不知道有没有更简单直观的方法,如果有可以评论让我知道一下