C# 如何用按钮实现鼠标滚轮操作

zilong4460072 2011-03-17 12:53:17
Form中的放了一个滚动条,鼠标的滚轮动一下,滚动条的位置就会相应的移动(如说一个CSDN的帖子如果回复过多,页面就会有个滚动条,鼠标滚轮能操作这个滚动条的位置)

我现在想用按钮带代替滚轮,就是点一下按钮(相当于鼠标滚轮滚动),滚动条的位置相应的移动


请问有什么好的实现方法吗?
...全文
1564 63 打赏 收藏 转发到动态 举报
写回复
用AI写文章
63 条回复
切换为时间正序
请发表友善的回复…
发表回复
yalan 2011-03-18
  • 打赏
  • 举报
回复
你想怎么用呢呵呵?
你们老大怎么要求的?
zilong4460072 2011-03-18
  • 打赏
  • 举报
回复
[Quote=引用 51 楼 yalan 的回复:]

估计还是焦点问题~~~~~~~~~~

我建议你用ToolStrip控件吧,无错简单好用还美观,用按钮的话虽然能重写单击事件为双击,但是为了稳定性还是不建议直接用按钮了。

你看我给你的切图,用ToolStrip的Button也很好看啊,前面图片后面文字呵呵
[/Quote]
不对,我试了下,虽然是button1_Click,但是只有双击的时候才会移动,单击是没效果的
你说的ToolStrip我也想用阿,不是我说用就能用的。。。
yalan 2011-03-18
  • 打赏
  • 举报
回复
估计还是焦点问题~~~~~~~~~~

我建议你用ToolStrip控件吧,无错简单好用还美观,用按钮的话虽然能重写单击事件为双击,但是为了稳定性还是不建议直接用按钮了。

你看我给你的切图,用ToolStrip的Button也很好看啊,前面图片后面文字呵呵
zilong4460072 2011-03-18
  • 打赏
  • 举报
回复
[Quote=引用 48 楼 yalan 的回复:]

找到问题所在了呵呵,因为点击按钮的时候焦点在按钮上,所以无法移动滚动条

如果在Button的点击事件中加入:
axAcroPDF1.Focus();
mouse_event(MOUSEEVENTF_WHEEL, 0, 0, -100, 0);

即先设置阅读器焦点然后滚动条的话,用户可能要点击好几次才能滚动一下,一点都不友好



最终方案:拖2个ToolStrip控件入窗……
[/Quote]
OK 测试成功 哈哈
但是现在又个问题是 按钮的话要点两次才会移动 这是什么原因那

/// <summary>
/// 上移
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
this.axAcroPDF.Focus();
mouse_event(MOUSEEVENTF_WHEEL, 0, 0, 500, 0);
}

要点两次 就是双击才会移动 单击不移动的
zilong4460072 2011-03-18
  • 打赏
  • 举报
回复
[Quote=引用 48 楼 yalan 的回复:]

找到问题所在了呵呵,因为点击按钮的时候焦点在按钮上,所以无法移动滚动条

如果在Button的点击事件中加入:
axAcroPDF1.Focus();
mouse_event(MOUSEEVENTF_WHEEL, 0, 0, -100, 0);

即先设置阅读器焦点然后滚动条的话,用户可能要点击好几次才能滚动一下,一点都不友好



最终方案:拖2个ToolStrip控件入窗……
[/Quote]
我再试试 哈
yalan 2011-03-18
  • 打赏
  • 举报
回复
找到问题所在了呵呵,因为点击按钮的时候焦点在按钮上,所以无法移动滚动条

如果在Button的点击事件中加入:
axAcroPDF1.Focus();
mouse_event(MOUSEEVENTF_WHEEL, 0, 0, -100, 0);

即先设置阅读器焦点然后滚动条的话,用户可能要点击好几次才能滚动一下,一点都不友好



最终方案:拖2个ToolStrip控件入窗体,一个在窗体上方控制向上滚动,一个在窗体下方控制向下滚动。

我测试了无问题,而且你还可以设计的界面十分漂亮。

如图:




测试效果很好
zilong4460072 2011-03-18
  • 打赏
  • 举报
回复
[Quote=引用 43 楼 yalan 的回复:]

我为了好看给你换成了菜单条了~~~~~~汗、

疯了,我加了按钮,能滚动~~
[/Quote]

private void toolStripLabel2_Click(object sender, EventArgs e)
{
mouse_event(MOUSEEVENTF_WHEEL, 0, 0, 100, 0);
}

private void toolStripLabel3_Click(object sender, EventArgs e)
{
mouse_event(MOUSEEVENTF_WHEEL, 0, 0, -100, 0);
}

private void button1_Click(object sender, EventArgs e)
{
toolStripLabel2_Click(sender, e);
}

private void button2_Click(object sender, EventArgs e)
{
toolStripLabel3_Click(sender, e);
}

这样还是不行饿 要么你把你加了按钮的代码再发给我看看
zilong4460072 2011-03-18
  • 打赏
  • 举报
回复
[Quote=引用 43 楼 yalan 的回复:]

我为了好看给你换成了菜单条了~~~~~~汗、

疯了,我加了按钮,能滚动~~
[/Quote]
饿 我这边加了按钮怎么不能滚动的?
zilong4460072 2011-03-18
  • 打赏
  • 举报
回复
[Quote=引用 44 楼 yalan 的回复:]

你用我给你的菜单条测试能滚动码?
是否菜单条的按钮能控制滚动你的按钮不能控制滚动?
[/Quote]
呵呵 菜单条能滚动的 我也试试看
yalan 2011-03-18
  • 打赏
  • 举报
回复
你用我给你的菜单条测试能滚动码?
是否菜单条的按钮能控制滚动你的按钮不能控制滚动?
yalan 2011-03-18
  • 打赏
  • 举报
回复
我为了好看给你换成了菜单条了~~~~~~汗、

疯了,我加了按钮,能滚动~~
zilong4460072 2011-03-18
  • 打赏
  • 举报
回复
[Quote=引用 39 楼 yalan 的回复:]

给你的两个解决方案:
1,使用控件自带的属性axAcroPDF1.gotoLastPage()上一页和axAcroPDF1.gotoNextPage()下一页
优点:调用方便;
缺点:无法细腻的滚动,就是那种鼠标滚动条的滚动效果没有,只是跳转到下一页上一页。

2,自己写事件
优点:想怎么控制滚动就怎么控制,非常细腻



附我给你修改的程序方法:
1,删……
[/Quote]
我加了俩按钮,点按钮也触发了mouse_event的事件,但是滚动条就是不动,这是什么原因呀

private void toolStripLabel2_Click(object sender, EventArgs e)
{
mouse_event(MOUSEEVENTF_WHEEL, 0, 0, 100, 0);
}

private void toolStripLabel3_Click(object sender, EventArgs e)
{
mouse_event(MOUSEEVENTF_WHEEL, 0, 0, -100, 0);
}

private void button1_Click(object sender, EventArgs e)
{
mouse_event(MOUSEEVENTF_WHEEL, 0, 0, 100, 0);
}

private void button2_Click(object sender, EventArgs e)
{
mouse_event(MOUSEEVENTF_WHEEL, 0, 0, -100, 0);
}
zilong4460072 2011-03-18
  • 打赏
  • 举报
回复
[Quote=引用 39 楼 yalan 的回复:]

给你的两个解决方案:
1,使用控件自带的属性axAcroPDF1.gotoLastPage()上一页和axAcroPDF1.gotoNextPage()下一页
优点:调用方便;
缺点:无法细腻的滚动,就是那种鼠标滚动条的滚动效果没有,只是跳转到下一页上一页。

2,自己写事件
优点:想怎么控制滚动就怎么控制,非常细腻



附我给你修改的程序方法:
1,删……
[/Quote]
大哥,我现在就是要用按钮呀。。 不能用toolStripLabel2
因为这个项目是做给电信营业厅的前台用的,前台都是触摸屏 当然要用按钮啦
还有就是翻页的属性我知道,但是不好用,因为一个PAGE屏幕显示不下,只好让用户用手指点触摸屏的按钮来反动滚动条
CAINIAOXIANGFEI 2011-03-18
  • 打赏
  • 举报
回复
把代码发上来看看啊
yalan 2011-03-18
  • 打赏
  • 举报
回复
给你的两个解决方案:
1,使用控件自带的属性axAcroPDF1.gotoLastPage()上一页和axAcroPDF1.gotoNextPage()下一页
优点:调用方便;
缺点:无法细腻的滚动,就是那种鼠标滚动条的滚动效果没有,只是跳转到下一页上一页。

2,自己写事件
优点:想怎么控制滚动就怎么控制,非常细腻



附我给你修改的程序方法:
1,删除你的两个按钮
2,拖一个ToolStrip到窗体上,新建2个标签:上滚动和下滚动,然后设置事件即可
优点:能完美模仿adobe阅读器
缺点:需要敲代码哈哈
yalan 2011-03-18
  • 打赏
  • 举报
回复
另外,模拟鼠标滚轮也实现了,邮件已发。我等着收分呢
yalan 2011-03-18
  • 打赏
  • 举报
回复
[Quote=引用 36 楼 zilong4460072 的回复:]
引用 34 楼 yalan 的回复:

好啊,等着接收呢呵呵

发送过去啦
[/Quote]

你这个要求我看了,用不着模拟鼠标啊,你可以直接用控件的属性:
private void 上移_Click(object sender, EventArgs e)
{
axAcroPDF1.gotoLastPage();
// mouse_event(MOUSEEVENTF_WHEEL, 0, 0,100, 0);
}
private void 下移_Click(object sender, EventArgs e)
{
axAcroPDF1.gotoNextPage();
//mouse_event(MOUSEEVENTF_WHEEL, 0, 0, -100, 0);
}
zilong4460072 2011-03-18
  • 打赏
  • 举报
回复
[Quote=引用 34 楼 yalan 的回复:]

好啊,等着接收呢呵呵
[/Quote]
发送过去啦
zilong4460072 2011-03-18
  • 打赏
  • 举报
回复
[Quote=引用 30 楼 yalan 的回复:]

哈哈,那我等着加到200分呢~~~~~~~~~~~~高分诱惑啊
[/Quote]
没那么多分了 加了50分
我把发个邮件给你 你看一下
zilong4460072 2011-03-18
  • 打赏
  • 举报
回复
[Quote=引用 31 楼 zilong4460072 的回复:]

引用 30 楼 yalan 的回复:

哈哈,那我等着加到200分呢~~~~~~~~~~~~高分诱惑啊

我向来都是大手大脚的 你要时刻关注我有没有发新帖哦 我从不发20分的帖子
[/Quote]
哈哈
加载更多回复(40)

110,577

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧