C#在Windows窗体中滚动面板

前端之家收集整理的这篇文章主要介绍了C#在Windows窗体中滚动面板前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用的是VS2010,Windows 7

我有一个面板上有很多画框.它有

AutoScroll = true

滚动条可以正常拖动,或者点击它.但是,我想用滚轮和箭头键滚动它.

轮子根本没有响应(并且添加事件处理程序到窗体不起作用,因为当我改变焦点时停止触发),并使用箭头键,我必须编程滚动.我试过以下:

panel3.VerticalScroll.Value = panel3.VerticalScroll.Maximum;

这不起作用,滚动条几乎没有移动.由于某种原因,最大值为100.

我试过的轮子问题(不工作):

// Fires as long as i don't change focus to anything
this.MouseWheel += new MouseEventHandler(Panel1_MouseWheel);

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

谢谢.

解决方法

一对夫妇要尝试:

使您的Panel具有第一个TabIndex属性.那是:

panel1.TabIndex = 0;

显然,表单上的其他控件应该被正确地重新索引.

另外,尝试在MouseDown事件中添加焦点:

void panel1_MouseDown(object sender,MouseEventArgs e) {
  if (!panel1.Focused)
    panel1.Focus();
}

您也可以执行MouseEnter,但这可能是一个奇怪的用户界面,因为将鼠标移到面板上会将焦点从当前的主动控制中移除.

您不需要订阅MouseWheel事件.它应该自动移动滚动条.

猜你在找的C#相关文章