我有一个面板的窗体上有自动滚屏设置为true,这样滚动条会自动出现。
我怎样才能使它这样用户就可以使用他的鼠标滚轮滚动面板? 太感谢。
我有一个面板的窗体上有自动滚屏设置为true,这样滚动条会自动出现。
我怎样才能使它这样用户就可以使用他的鼠标滚轮滚动面板? 太感谢。
的面板或在面板的控制必须具有焦点。 需要注意的是,如果将带有焦点的控件有滚动条,它会滚动,而不是面板。
什么工作对我来说是增加panel1_MouseEnter
事件处理程序:
private void panel1_MouseEnter(object sender, EventArgs e)
{
panel1.Focus();
}
下面的代码对我的作品.....
Public Form
{
InitializeComponent();
this.MouseWheel += new MouseEventHandler(Panel1_MouseWheel);
}
private void Panel1_MouseWheel(object sender, MouseEventArgs e)
{
panel1.Focus();
}
在设计文件中,可以添加以下代码行。 鼠标滚轮事件不会在属性窗口事件列表doumented。
this.Panel1.MouseWheel+= System.Windows.Forms.MouseEventHandler(this.Panel1_MouseWheel);
当您滚动鼠标WEEL Panel1_MouseWheel将被触发
添加代码,在cs文件
请确保您的面板具有焦点。 这是简单的代码来滚动您的面板滚动条。 希望这有助于。 :) 在此处输入代码
if(e.Delta > 0)
{
if (pnlContain.VerticalScroll.Value - 2 >= pnlContain.VerticalScroll.Minimum)
pnlContain.VerticalScroll.Value -= 2;
else
pnlContain.VerticalScroll.Value = pnlContain.VerticalScroll.Minimum;
}
else
{
if (pnlContain.VerticalScroll.Value + 2 <= pnlContain.VerticalScroll.Minimum)
pnlContain.VerticalScroll.Value += 2;
else
pnlContain.VerticalScroll.Value = pnlContain.VerticalScroll.Maximum;
}
我使用的是Windows形成边框样式设置为无,在这里我用一个小组,有我在所有的控制,所以它看起来不错(色差和等..)也有同样的问题,而我有其他形式的正常工作。
我怎么忘了:
public myForm()
{
InitializeComponent();
this.DoubleBuffered = true;
}
DoubleBuffered是神奇的,我注意到..
移动滚轮应触发该控件的MouseMove事件。 该MouseEventArgs参数有一个名为三角洲属性,使缺口的(签字)号鼠标滚轮移动。 您可以使用此属性来滚动面板。
该解决方案通过提供Beam022(如上所示)为我工作,而许多其他解决方案都没有。 就我而言,我正在试图用滚动鼠标滚轮事件DataGridView控件。
该DataGridView_MouseWheel事件处理函数被调用,但FirstDisplayedScrollingRowIndex价值从未改变。 该值总是“0”时甚至明确后,设置为1,这是因为如果该属性是只读的。
不过瑞普在.Net框架4.6。
在我的情况下,面板的整个客户区被占用用户控件(内区域中可见的不是一个单一的像素,除了滚动条)。
在这种情况下,面板没有得到鼠标事件,绝不会集中(apperently,点击滚动条不能算作“面板内是”)。
我有以下行添加到我的用户派生类的构造函数:
MouseEnter += delegate {
Parent?.Focus();
};
现在,它工作得很好,因为我在用户控件没有滚动内容。