WPF 应用程序中的滚轮出现问题
我遇到一个问题,在一台计算机上使用 Windows Presentation Foundation 开发的应用程序的滚轮全部倒转。我“向上”滚动,相关控件就会向下滚动。反之亦然。其他程序不受影响并且滚动得很好。
我已经搜索了很多,但我似乎无法弄清楚可能是什么原因造成的。我用的是W7 64位。
我尝试过或可能知道的有用的事情...
- 使用 Winforms 以及普通的 Win32 api 创建应用程序。在这些中,当我向下滚动时,它也会向下滚动。那里一切都很好。
- 我还在我的 WXP 32 位笔记本电脑上尝试了受影响的应用程序之一(我自己编写的)。就这一点而言,向下滚动确实意味着向下滚动。
- 我使用标准的 Windows 鼠标驱动程序。没有安装精美的罗技或其他软件可能会导致此问题。
- 此 Windows 安装已有 2 个月左右的时间。几乎没有什么多余的东西。我毫不怀疑,如果我重新安装,我会设法再次触发它。 (我以前从未遇到过这个问题,因为在此之前我运行的是 XP,并且像躲避瘟疫一样避免使用 .NET。)
有人知道什么设置隐藏在哪里,导致我的 WPF 应用程序像这样混乱吗?
编辑:
当将以下内容放在填充的列表视图上时,会给出正确的消息(向下滚动,向上滚动),但它仍然会以错误的方式滚动方向。我勒个去?
private void listView1_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
{
if (e.Delta < 0)
textBox1.Text = "PREVIEW DOWN WE GO."; // no we end up going up :(
else
textBox1.Text = "PREVIEW UP UP UP."; // big letdown here.
}
(普通的 MouseWheel 事件不会触发,因此预览会有所不同。)
I have an issue that on one computer applications developed using the Windows Presentation Foundation have my scrollwheel all inverted. I scroll 'upwards' and the control in question will go down. And vice versa. Other programs are not affected and scroll just fine.
I have searched a lot, but I can't seem to figure out what might be causing it. I am using W7 64-bit.
Things I have tried or might be useful to know...
- creating an application using Winforms as well as a plain Win32 api. In those, when I scroll down, it scrolls down. All is well there.
- I have also tried one of the affected applications (which I myself wrote) on my WXP 32-bit laptop. On that one, scrolling down indeed means scrolling down.
- I use the standard Windows mouse driver. No fancy Logitech or other software installed that might be causing this.
- This Windows installation is 2 months old or so. There is very little, if no cruft. I have no doubt that if I reinstalled, I'd manage to trigger it again. (I never had this issue before because prior to this I ran XP and avoided .NET like the plague.)
Anyone have any clue what setting is hiding where that's messing my WPF applications up like this?
Edit:
The following, when put on a populated listview, gives the correct message (down for down scroll, up for up scroll), yet it will still scroll in the wrong direction. What the hell?
private void listView1_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
{
if (e.Delta < 0)
textBox1.Text = "PREVIEW DOWN WE GO."; // no we end up going up :(
else
textBox1.Text = "PREVIEW UP UP UP."; // big letdown here.
}
(The plain MouseWheel event won't fire, hence the preview variety.)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
天哪,我刚刚想通了。它突然击中了我。
我将鼠标滚轮设置为“一次滚动一个屏幕”。尽管我在那个窗口上看了十几遍寻找我可能已经检查过的“反转滚动方向”选项,但我从未想过任何事情。
将设置设置为在滚轮上每个凹口滚动给定的行数可以修复滚动问题,尽管我没有得到预期的分页。
对于微软来说,这是明显的错误编码。首先,我花了半天时间在互联网上搜索
TextOptions.TextFormattingMode="Display"
,这样我的表单看起来才不像完全垃圾,然后我花了一小段时间在另一个问题上,幸好有一个简单的设置也够了。现在这个。我是否只是遇到了其他人似乎没有遇到或关心的所有小路坎? :/(很抱歉再次回答我自己的问题,善良的人们。尽管我花了几个小时寻找有关此事的答案,但我已经完成了最后几个问题。呃。)
Holy crap, I just figured it out. It suddenly hit me.
I have me Mouse wheel set to 'scroll one screen at a time'. I never thought anything of it despite going over that window a dozen times looking for an 'invert scroll direction' option I might have checked.
Setting the setting to scroll a given number of lines per notch on my wheel fixes the scrolling, although I don't get my expected paging.
This is plain buggy coding on Microsoft's part. First I spend half a day searching the internet for
TextOptions.TextFormattingMode="Display"
so my forms don't look like total crap, then I spend a small eternity on another issue which thankfully had a simple setting suffice as well. And now this. Am I just hitting all those little roadbumps nobody else seems to hit or care much about? :/(Apologies for answering my own question again, kind people. I've done it the last few questions despite searching for answers on the matter for hours. Ugh.)
绝对没有理由发生这种情况。您是否尝试过在其他计算机上运行有问题的应用程序。
There is absolutely no reason for this to happen. Have you tried running the problematic application on other computers.