如果按住鼠标按钮时WPF ListBox获取MouseMove事件,它将更改列表框的选择.也就是说,如果在项目#1上单击鼠标,然后在项目#2上拖动,它将取消选择项目#1并选择项目#2.我怎么能阻止这个?
这是短版本.稍长的版本是这样的:当用户双击我的ListBox中的项目时,我对我的布局进行了其他更改,其中包括显示ListBox上方的其他控件.这会向下移动ListBox,这意味着鼠标现在位于不同的ListBoxItem上,而不是用户双击时.
由于我根据DoubleClick事件(这是一个鼠标按下事件)进行了这些布局更改,因此当布局更改完成时,鼠标按钮很可能仍然会被按下,这意味着WPF会向ListBox发送一个MouseMove事件(因为鼠标的位置相对于ListBox已经改变了).ListBox将其视为拖动,并选择现在在鼠标下的事件.
我不希望选择在我获得双击事件和用户释放鼠标的时间(布局更改后可能会很好)之间进行更改.我怀疑实现这一目标的最简单方法是禁用"拖动更改选择"行为,但我对其他建议持开放态度.
如何在双击时"锁定"选择,并防止它更改直到鼠标?
演示:http://jsfiddle.net/thisizmonster/VRPDa/
目的:
怎么样?
编辑/添加
既然大家都说我不能移动鼠标坐标,我认为它失败了.顺便说一句,我的主要目的是因为Facebook评论插件.默认情况下,它显示"按社会排名".我的要求默认为"Reverse Chronological".但插件本身放在iFrame中,所以我无法访问其元素.所以我决定在页面加载后,快速移动鼠标并选择选项并恢复鼠标坐标.它失败了我想:(
var mouseStillDown = false;
$(".grab").mousedown(function(e) {
mouseStillDown=true;
getLocation();
}).mouseup(function(e) {
mouseStillDown = false;
getLocation();
});
if(mouseStillDown) {
$("#image_360").bind("mousemove", function(e){
$("#location").text("e.pageX: " + e.pageX + ", e.pageY: " + e.pageY);
});
}
else if(!mouseStillDown) {
$("#image_360").unbind("mousemove", function(e){
$("#location").text("removed location");
});
}
Run Code Online (Sandbox Code Playgroud)
即使我没有绑定的mousemove,我仍然会在div上看到带有pageX和pageY的文本 id=location
是否可以使用mousemove获取当前元素?如果鼠标不在元素x或y上,我想获取鼠标所在的元素.
举个例子 :
$(document).mousemove(function(e)
{
if(e.xxxx.attr("id") == "elem")
...
});
Run Code Online (Sandbox Code Playgroud)
xxxx是我正在寻找的,我希望它存在:)
谢谢
我想用DragDrop我PicureBox上课,但DragDrop()和DragEnter()方法不会被调用.
我创建了方法MouseMove,在这个方法中我调用了DoDragDrop()哪个应该调用DragDrop()和DragEnter().MouseMove被召唤但不休息.
表单构造函数:
public Form1()
{
InitializeComponent();
this.AllowDrop = true;
}
Run Code Online (Sandbox Code Playgroud)
这是在构造函数中创建的PictureBox:
this.DragDrop += new DragEventHandler(ttile_DragDrop);
this.DragEnter += new DragEventHandler(ttile_DragEnter);
this.MouseMove += new MouseEventHandler(ttile_MouseMove);
Run Code Online (Sandbox Code Playgroud)
我的方法:
public void ttile_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
{
int i = 0;
}
public void ttile_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
{
int i = 0;
}
public void ttile_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (e.Button == MouseButtons.Left) …Run Code Online (Sandbox Code Playgroud) 在OSX中的SKScene中不会调用以下响应程序(在NSResponder中定义):
-(void) mouseMoved:(NSEvent *)theEvent {
DLog(@"TEST");
}
Run Code Online (Sandbox Code Playgroud)
我已经说过在app appate中接受鼠标移动事件的窗口.
_window.acceptsMouseMovedEvents = YES;
Run Code Online (Sandbox Code Playgroud)
先感谢您.
解:
添加到应用代理:
_window.acceptsMouseMovedEvents = YES;
[_window makeFirstResponder:self.skView.scene];
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一些 Vanilla Javascript 来使元素跟随我的鼠标移动。我使用了 clientX、clientY 和 mousemove 事件来使其跟随,但是当我滚动页面时,元素不会随鼠标移动。我想也许我需要使用滚动事件,但我正在努力使其工作。任何帮助都会很棒,谢谢!
document.addEventListener('mousemove', (e) => {
const mouseFollow = document.getElementById('mouse-follow');
const x = e.clientX - 25; //-25 to center div over mouse
const y = e.clientY - 25;
mouseFollow.style.top = `${y}px`;
mouseFollow.style.left = `${x}px`;
})
Run Code Online (Sandbox Code Playgroud) 我如何制作一个不断向上移动鼠标的小程序?
对于那些想知道的人来说,这是一个很小的用途.我正在玩星球大战原力释放.在控制台版本中,您可以向上保持正确的方向.在PC上的坏控制台端口,您正在使用鼠标.也许你能理解我的沮丧.
我有一个ItemsControl,其ItemsPresenter响应MouseMove事件.项目在数据源中移动,如果移动项目时鼠标位于控件上,则MouseMove即使鼠标未移动,也会导致事件触发.
以下是演示该问题的示例.
XAML:
<ItemsControl Name="ladder" ItemsSource="{Binding Rows}">
<ItemsControl.Template>
<ControlTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition />
</Grid.RowDefinitions>
<TextBlock Text="Header" Grid.Column="0" />
<ItemsPresenter Grid.Row="1"
MouseMove="OnMouseMove"/>
</Grid>
</ControlTemplate>
</ItemsControl.Template>
</ItemsControl>
Run Code Online (Sandbox Code Playgroud)
C#:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = this;
Rows.Add(new Row { Name = "0" });
Rows.Add(new Row { Name = "1" });
Rows.Add(new Row { Name = "2" });
Rows.Add(new Row { Name = "3" });
Rows.Add(new …Run Code Online (Sandbox Code Playgroud) 我有一个jquery代码
$(function() {
$("input").on("mouseover", function() {
var a = $('input').attr('name');
populate(a);
});
});
Run Code Online (Sandbox Code Playgroud)
我有三个输入元素.
Computer Language: <br>
<div>
<datalist id="language"></datalist>
<input type="text" list="language" name= "language" id="search"/>
</div>
<br>
Country: <br>
<div>
<datalist id="country"></datalist>
<input type="text" list="country" name= "country" id="search" />
</div>
<br>
Degree: <br>
<div>
<datalist id="degree"></datalist>
<input type="text" list="degree" name= "degree" id="search"/>
</div>
Run Code Online (Sandbox Code Playgroud)
现在,mouseoverevent仅触发具有名称language(或顶部输入元素)的事件.为什么mouseover没有为第二和第三个输入元素触发事件?
mousemove ×10
jquery ×4
c# ×3
javascript ×2
wpf ×2
click ×1
css ×1
html ×1
listbox ×1
macos ×1
mousedown ×1
mouseevent ×1
mouseup ×1
picturebox ×1
selecteditem ×1
sprite-kit ×1
winforms ×1