我如何用我的鼠标滚轮滚动我的面板?(How can I scroll my panel using

2019-08-31 06:13发布

我有一个面板的窗体上有自动滚屏设置为true,这样滚动条会自动出现。

我怎样才能使它这样用户就可以使用他的鼠标滚轮滚动面板? 太感谢。

Answer 1:

的面板或在面板的控制必须具有焦点。 需要注意的是,如果将带有焦点的控件有滚动条,它会滚动,而不是面板。



Answer 2:

什么工作对我来说是增加panel1_MouseEnter事件处理程序:

private void panel1_MouseEnter(object sender, EventArgs e)
{
    panel1.Focus();
}


Answer 3:

下面的代码对我的作品.....

    Public Form
{
InitializeComponent();  
this.MouseWheel += new MouseEventHandler(Panel1_MouseWheel);
}

 private void Panel1_MouseWheel(object sender, MouseEventArgs e)
        {
         panel1.Focus();
         }


Answer 4:

在设计文件中,可以添加以下代码行。 鼠标滚轮事件不会在属性窗口事件列表doumented。

this.Panel1.MouseWheel+= System.Windows.Forms.MouseEventHandler(this.Panel1_MouseWheel);

当您滚动鼠标WEEL Panel1_MouseWheel将被触发

添加代码,在cs文件



Answer 5:

请确保您的面板具有焦点。 这是简单的代码来滚动您的面板滚动条。 希望这有助于。 :) 在此处输入代码

        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;
        }


Answer 6:

我使用的是Windows形成边框样式设置为无,在这里我用一个小组,有我在所有的控制,所以它看起来不错(色差和等..)也有同样的问题,而我有其他形式的正常工作。

我怎么忘了:

   public myForm()
   {
        InitializeComponent();
        this.DoubleBuffered = true;
   }

DoubleBuffered是神奇的,我注意到..



Answer 7:

移动滚轮应触发该控件的MouseMove事件。 该MouseEventArgs参数有一个名为三角洲属性,使缺口的(签字)号鼠标滚轮移动。 您可以使用此属性来滚动面板。



Answer 8:

该解决方案通过提供Beam022(如上所示)为我工作,而许多其他解决方案都没有。 就我而言,我正在试图用滚动鼠标滚轮事件DataGridView控件。

该DataGridView_MouseWheel事件处理函数被调用,但FirstDisplayedScrollingRowIndex价值从未改变。 该值总是“0”时甚至明确后,设置为1,这是因为如果该属性是只读的。

不过瑞普在.Net框架4.6。



Answer 9:

在我的情况下,面板的整个客户区被占用用户控件(内区域中可见的不是一个单一的像素,除了滚动条)。

在这种情况下,面板没有得到鼠标事件,绝不会集中(apperently,点击滚动条不能算作“面板内是”)。

我有以下行添加到我的用户派生类的构造函数:

MouseEnter += delegate {
   Parent?.Focus();
};

现在,它工作得很好,因为我在用户控件没有滚动内容。



文章来源: How can I scroll my panel using my mousewheel?