当我使用带有滚动条的任何控件(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) 我在我的项目中添加了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) 我正在开发一个横向网站,可以让我的鼠标滚动滚动到左右两侧...
我的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键时,这对我有用.
今天我在微软的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轴指向最右边,最底部分别是文档的边缘和最远深度(远离用户).
deltaZ倒置或甚至支持开始,我缺乏这样的输入设备.我在这里向微软报告了这个漏洞.它被分配给某人,所以希望它将被修复.
单击鼠标中键(又名:鼠标滚轮),然后稍微向下移动鼠标,用户可以在IE和大多数Windows应用程序中滚动.默认情况下,WPF控件中似乎缺少此行为?有没有设置,解决方法,或者我缺少的明显的东西?
之前有人问过这个问题,但提供的解决方案仅适用于jQuery,因为我在 ReactJs 中面临同样的问题。
是否可以禁用滚轮更改输入数字字段中的数字?我使用 CSS 删除了微调箭头,但鼠标滚轮仍在工作并弄乱了功能。
我想要输入类型,number因为它在移动/触摸设备上提供数字键盘。
我有一个Silverlight 4应用程序,它可以从对许多控件的本机鼠标滚轮支持中获益.承载应用程序的页面具有HTML驱动的下拉菜单,该菜单通常会覆盖Silverlight控件.
在IE中,我必须启用无窗口模式以允许覆盖菜单正常工作(Firefox 3.6在没有它的情况下正常工作).但是,启用无窗口模式可防止Firefox支持鼠标滚轮事件,而无需在HTML DOM桥接器周围进行额外编码.
有什么方法可以告诉哪些浏览器需要无窗口,哪些浏览器没有它?理想情况下,我想使用HttpBrowserCapabilities信息来决定是否将属性设置为true,而不是硬编码"支持的"浏览器列表.
我正在处理鼠标事件OnMouseWheel.许多码样本参考距离的视图的改变(或者在3D应用变焦FI)作为Distance = Sign(WheelDelta)*Constant或Distance = WheelDelta / WHEEL_DELTA或该种东西-假定WheelDelta始终是120的倍数(WHEEL_DELTA常数= 120).
我已经发现在触摸界面/平板电脑输入可能取决于滚动长度.
我想知道为什么微软将默认的WheelDelta设置为120,为什么不是100或10或其他什么?在其他情况下,轮三角可能与120不同?
基本上,我有在鼠标滚轮上滚动的flash内容.它工作正常,除非浏览器中有其他内容,以便启用浏览器的滚动条 - 在这种情况下,浏览器窗口和我的SWF都在鼠标滚轮上滚动.有没有办法纠正这种行为?
类似的问题在这里问:
这里引用了博客的解决方案:
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) ...不限制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中的内容时,如何防止页面滚动?
mousewheel ×10
javascript ×3
c# ×1
css ×1
events ×1
firefox ×1
flash ×1
html ×1
iframe ×1
java ×1
jpanel ×1
jquery ×1
jscrollpane ×1
reactjs ×1
scroll ×1
scrollbar ×1
scrollviewer ×1
silverlight ×1
swing ×1
winapi ×1
windowless ×1
winforms ×1
wpf ×1