Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Mouse.Synchronize()_C#_.net - Fatal编程技术网

C# Mouse.Synchronize()

C# Mouse.Synchronize(),c#,.net,C#,.net,Mouse.Synchronize()在.Net中做什么 MSDN说它“强制鼠标重新同步”这只是我的假设: 类中存在类似的方法:。它应该与一起使用,以确保触笔指针仍然位于按钮上方,尽管按钮已移动到其他位置 我相信,“同步”是在两个类的父类中实现的:触控笔和鼠标。这对手写笔很重要,但对鼠标来说并不是必需的。我从中尝试了示例(我刚刚用“鼠标”替换了“手写笔”),没有鼠标它也可以正常工作。Synchronize();行。好吧,这里值得一提的是该方法的源代码: public void Synchroni

Mouse.Synchronize()在.Net中做什么

MSDN说它“强制鼠标重新同步”

这只是我的假设:

类中存在类似的方法:。它应该与一起使用,以确保触笔指针仍然位于按钮上方,尽管按钮已移动到其他位置


我相信,“同步”是在两个类的父类中实现的:触控笔和鼠标。这对手写笔很重要,但对鼠标来说并不是必需的。我从中尝试了示例(我刚刚用“鼠标”替换了“手写笔”),没有鼠标它也可以正常工作。Synchronize();行。

好吧,这里值得一提的是该方法的源代码:

public void Synchronize()
{
PresentationSource criticalActiveSource=此.criticalActiveSource;
如果(((criticalActiveSource!=null)&&&&(criticalActiveSource.CompositionTarget!=null))&&&!criticalActiveSource.CompositionTarget.IsDisposed)
{
InputReportEventArgs参数;
int tickCount=Environment.tickCount;
Point clientPosition=this.GetClientPosition();
RawMouseInputReport=新的RawMouseInputReport(InputMode.Foreground,tickCount,CriticalActivieSource,RawMouseActions.AbsoluteMove,(int)clientPosition.X,(int)clientPosition.Y,0,IntPtr.Zero);
报告。_isSynchronize=true;
如果(此._stylusDevice!=null)
{
args=新的InputReportEventArgs(此.\u stylusDevice,报告);
}
其他的
{
args=新的InputReportEventArgs(本报告);
}
args.RouteEvent=InputManager.PreviewInputReportEvent;
这是.\u inputManager.Value.ProcessInput(args);
}
}
重要的一点是:

RawMouseInputReport report = new RawMouseInputReport(InputMode.Foreground, tickCount, criticalActiveSource, RawMouseActions.AbsoluteMove, (int) clientPosition.X, (int) clientPosition.Y, 0, IntPtr.Zero);

根据这一点,该方法试图将鼠标移动到它已经处于的同一位置,然后分析结果——我自己的假设是,如果以前的位置和新位置之间有任何偏移,它将存储在某个位置,并用于将来的任何鼠标操作。

。。。嗯,这不是有史以来最好的文档:“强制鼠标重新同步。”MSDN上有一些关于MouseDevice.Synchronize()的评论,看起来微软应该添加更多信息。。我认为这与重置鼠标的轮询频率有关,并与操作系统的频率相匹配。。虽然我不确定。谢谢。在WPF中,有一个Thumb类,我认为这可能很有用。有时,在对拇指执行拖动操作时,如果条件不允许拇指进一步移动,用户继续拖动,dragdelta会发疯。我认为这在那里可能非常有用。事实上,问这个问题的真正原因是我有一种预感,它可能在做这样的事情。