标签: mousewheel

使用任何带有滚动条的控件时,不会触发MouseWheel事件(在C#Windows窗体中)

当我使用带有滚动条的任何控件(ListBox,Panel,TextBox)时,MouseWheel事件不会触发.

重现问题:

public class Form1 : Form
 {
  private readonly Button button1;
  private readonly TextBox textBox1;

  private void button1_MouseWheel(object sender, MouseEventArgs e)
  {
   ToString(); // doesn't fire when uncomment lines below
  }

  public Form1()
  {
   button1 = new Button();
   textBox1 = new TextBox();
   SuspendLayout();

   button1.Location = new System.Drawing.Point(80, 105);
   button1.Size = new System.Drawing.Size(75, 23);
   button1.MouseWheel += button1_MouseWheel;
   button1.Click += button1_Click;

   textBox1.Location = new System.Drawing.Point(338, 105);
   //textBox1.Multiline = true; // uncomment this
   //textBox1.ScrollBars = ScrollBars.Vertical;  // uncomment this 
   textBox1.Size = new …
Run Code Online (Sandbox Code Playgroud)

c# events scrollbar mousewheel winforms

13
推荐指数
2
解决办法
1万
查看次数

如何在JScrollPane上增加慢滚动速度?

我在我的项目中添加了JPanel一个JScrollPane.

所有工作正常,但有关于使用鼠标滚轮一个问题鼠标滚轮在JPanel的.滚动速度非常慢.如何让它更快?

我的代码是:

JPanel panel = new JPanel();

panel.setLayout(new BorderLayout());
objCheckBoxList = new CheckBoxList();
BaseTreeExplorer node = (BaseTreeExplorer)projectMain.objCommon.tree.getLastSelectedPathComponent();
if (node.getObject() != null) {
    cmbList.setSelectedItem(node.getParent().toString());
} else {
    if (node.toString().equalsIgnoreCase("List of attributes")) {
        cmbList.setSelectedIndex(0);
    } else {
        cmbList.setSelectedItem(node.toString());
    }
}

panel.add(objCheckBoxList);

JScrollPane myScrollPanel = new JScrollPane(panel);

myScrollPanel.setPreferredSize(new Dimension(200, 200));
myScrollPanel.setBorder(BorderFactory.createTitledBorder("Attribute List"));
Run Code Online (Sandbox Code Playgroud)

java swing jpanel mousewheel jscrollpane

13
推荐指数
1
解决办法
8195
查看次数

jQuery鼠标滚轮水平滚动

我正在开发一个横向网站,可以让我的鼠标滚动滚动到左右两侧...

我的jQuery包含序列:

<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/jquery-1.11.1.js"></script>

<!--jquery validation script-->
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/jquery.validate.min.js"></script>

<!--Smooth Scroll-->
<script type="text/javascript" src="js/jquery.easing.1.3.js"></script>
Run Code Online (Sandbox Code Playgroud)

我的代码如下:

<script type="text/javascript" src="js/jquery.mousewheel.min.js"></script>


<script>
$.noConflict();

$(function() {
        $("body").mousewheel(function(event,delta) {
            this.scrollLeft -= (delta * 30);

            event.preventDefault();
        })
    })

$(function() {...});

$(document).ready(function() {

        $('#form').validate({...});

        $("#submit").click(function()
        {...});
    })
</script>
Run Code Online (Sandbox Code Playgroud)

我的"身体"CSS如下:

html {
width:100%;
overflow-y:hidden;
overflow-x: scroll;
}
body{

}
Run Code Online (Sandbox Code Playgroud)

目前我怀疑的代码是:

<!--Smooth Scroll-->
<script type="text/javascript" src="js/jquery.easing.1.3.js"></script>
Run Code Online (Sandbox Code Playgroud)

我认为这与鼠标滚动崩溃.

鼠标滚动工作,唯一的问题是鼠标滚动不顺畅,有时停在那里,有时甚至无法移动,不是我的鼠标问题.我不确定是什么原因造成这种情况,因为我已经尝试将它调试了2天.有人在这里分享他们对这个问题的看法吗?

我一直在寻找解决方案,但在我的案例中看起来很奇怪.滚动到某个部分并在中间卡住.(只是滚动条.)我在Mac上使用Chrome进行测试.顺便说一句,滚动时有任何类似AutoShift的解决方案,因为当我按下Shift键时,这对我有用.

html css jquery mousewheel

13
推荐指数
2
解决办法
2万
查看次数

在Microsoft Edge浏览器中处理奇怪的倒车轮事件deltaX?

今天我在微软的Edge浏览器中发现了一些非常奇怪的行为,其中事件deltaX价值显然是倒置的!这特别令人惊讶,因为这与我测试过的所有其他浏览器不一致,包括返回预期值的Internet Explorer 11.wheel

看到这个问题很简单,只需运行以下代码,然后使用鼠标滚轮或触控板即可.

window.addEventListener('wheel', function(e) {
    console.log(e.deltaX, e.deltaY);
});
Run Code Online (Sandbox Code Playgroud)

为方便起见,我创建了一个完整的页面示例(片段对此非常棘手):

全页工作示例

向下滑动会给出正值,并且在Edge,IE和其他浏览器中提供负值会产生预期值.但是,在Edge中,left左侧给出正值,右侧为负值,与其他浏览器完全相反(包括IE11及以下).

我制作了一些GIF视频来展示这个问题,并链接了文件大小.

问题:

为什么会这样,是否有处理浏览器兼容性问题的解决方案?有没有办法对功能进行检测?这种行为是一个错误,还是在某处记录?

该规范强烈暗示这实际上是不正确的行为:

如果用户代理滚动为滚轮事件的默认动作,那么三角形的符号应该由右手坐标系给出,其中正X,Y和Z轴指向最右边,最底部分别是文档的边缘和最远深度(远离用户).

笔记:

  • 我已经在Windows 10 VM和原生笔记本电脑上测试了这一点,两者的行为都是一样的.
  • 我有理由相信这与"自然"/反向滚动无关(在测试的所有系统和VM主机上关闭,并且仅在一个轴上发生).
  • 在侧面说明,我不知道是否deltaZ倒置或甚至支持开始,我缺乏这样的输入设备.

错误报告:

我在这里向微软报告了这个漏洞.它被分配给某人,所以希望它将被修复.

javascript mousewheel mouselistener microsoft-edge

13
推荐指数
1
解决办法
476
查看次数

如何使WPF ScrollViewer中键单击滚动?

单击鼠标中键(又名:鼠标滚轮),然后稍微向下移动鼠标,用户可以在IE和大多数Windows应用程序中滚动.默认情况下,WPF控件中似乎缺少此行为?有没有设置,解决方法,或者我缺少的明显的东西?

wpf scroll mousewheel scrollviewer

12
推荐指数
1
解决办法
4967
查看次数

在 React 中禁用 `&lt;input type=number&gt;` 上的滚动

之前有人问过这个问题,但提供的解决方案仅适用于jQuery,因为我在 ReactJs 中面临同样的问题。

是否可以禁用滚轮更改输入数字字段中的数字?我使用 CSS 删除了微调箭头,但鼠标滚轮仍在工作并弄乱了功能。

我想要输入类型,number因为它在移动/触摸设备上提供数字键盘。

javascript mousewheel reactjs

12
推荐指数
3
解决办法
4478
查看次数

Silverlight 4,鼠标滚轮事件和无窗口模式

我有一个Silverlight 4应用程序,它可以从对许多控件的本机鼠标滚轮支持中获益.承载应用程序的页面具有HTML驱动的下拉菜单,该菜单通常会覆盖Silverlight控件.

在IE中,我必须启用无窗口模式以允许覆盖菜单正常工作(Firefox 3.6在没有它的情况下正常工作).但是,启用无窗口模式可防止Firefox支持鼠标滚轮事件,而无需在HTML DOM桥接器周围进行额外编码.

有什么方法可以告诉哪些浏览器需要无窗口,哪些浏览器没有它?理想情况下,我想使用HttpBrowserCapabilities信息来决定是否将属性设置为true,而不是硬编码"支持的"浏览器列表.

silverlight mousewheel windowless silverlight-4.0

11
推荐指数
1
解决办法
1823
查看次数

为什么WheelDelta = 120?

我正在处理鼠标事件OnMouseWheel.许多码样本参考距离的视图的改变(或者在3D应用变焦FI)作为Distance = Sign(WheelDelta)*ConstantDistance = WheelDelta / WHEEL_DELTA或该种东西-假定WheelDelta始终是120的倍数(WHEEL_DELTA常数= 120).

我已经发现在触摸界面/平板电脑输入可能取决于滚动长度.

我想知道为什么微软将默认的WheelDelta设置为120,为什么不是100或10或其他什么?在其他情况下,轮三角可能与120不同?

winapi mousewheel

11
推荐指数
2
解决办法
9514
查看次数

如何在AS3中停止同时进行浏览器和SWF鼠标滚轮滚动?

基本上,我有在鼠标滚轮上滚动的flash内容.它工作正常,除非浏览器中有其他内容,以便启用浏览器的滚动条 - 在这种情况下,浏览器窗口和我的SWF都在鼠标滚轮上滚动.有没有办法纠正这种行为?

类似的问题在这里问:

光标在flex app上时禁用鼠标滚轮滚动?

这里引用了博客的解决方案:

http://www.spikything.com/blog/index.php/2009/11/27/stop-simultaneous-flash-browser-scrolling/

但该解决方案并不适用于所有浏览器!虽然它适用于某些Windows浏览器,但它在Mac OS X上根本不起作用 - 它在Firefox中注册了鼠标滚轮事件,但它们在Chrome和Safari中根本没有被解雇.

现在我知道(根据官方Adobe InteractiveObject文档)鼠标滚轮据说只在Windows系统上受支持,但默认情况下在Mac OS X上仍会触发该事件.这是否同时滚动错误是不支持的原因?

编辑:在上述解决方案中添加更多信息...

请注意,上述解决方案基本上使用ExternalInterface将以下JavaScript发送到"eval"函数:

var browserScrolling;

function allowBrowserScroll(value) {
    browserScrolling = value;
}
function handle(delta) {
    if (!browserScrolling) {
        return false;
    }
    return true;
}
function wheel(event) {
    var delta = 0;
    if (!event) {
        event = window.event;
    }
    if (event.wheelDelta) {
        delta = event.wheelDelta / 120;
    } else if (event.detail) {
        delta = -event.detail / 3;
    }
    if (delta) {
        handle(delta);
    }
    if (!browserScrolling) …
Run Code Online (Sandbox Code Playgroud)

flash actionscript-3 mousewheel

11
推荐指数
1
解决办法
2719
查看次数

当Firefox中的鼠标嵌入iframe时,防止父页面滚动

...不限制iframe内的滚动或需要专门命名/标记所有可滚动元素.

想象一下嵌入在父页面中的谷歌地图小部件.放大窗口小部件时,显然不希望父页面滚动.

我以为我前一个问题的答案解决了这个问题:

在iframe内滚动时,身体对那里发生的事情一无所知.但是当iframe卷轴到达底部或顶部时,它会滚动到正文.

取消从iframe传播的事件.

但该解决方案在Firefox中不起作用,因为Firefox不会 - 按设计 - 将iframe捕获的事件传播到父页面,但奇怪的是它会滚动父页面.在这里看到jsfiddle.

$('body').bind('mousewheel DOMMouseScroll', onWheel);

function onWheel (e){
    if (e.target === iframe)
        e.preventDefault();
    console.log(e);
}
Run Code Online (Sandbox Code Playgroud)

那么,当用户在Firefox中缩放嵌入式iframe中的内容时,如何防止页面滚动?

javascript iframe firefox javascript-events mousewheel

11
推荐指数
1
解决办法
6004
查看次数