3
我正在为图表内容实现'光标下的值'读数。目前我实现这一使用ReactiveExtensions和订阅的GetMouseMove事件对我的图表背景网格:如何手动触发固定鼠标的MouseMove事件
private void SetupMouseover(Grid plotArea)
{
var mouseMove = from mo in plotArea.GetMouseMove()
select new
{
CurrentPos = mo.EventArgs.GetPosition(plotArea)
};
mouseMove.Subscribe(
item =>
{
// Update the readout contents
readoutTextBlock.Text = PositionToReadoutValue(item.CurrentPos);
}
);
}
而且工作正常。我可以移动鼠标并更新我的文本块。
问题是图表内容正在动态更新(在屏幕上移动)。如果我将鼠标光标固定在点上,它下面的内容会改变,但显然读取不会更新。
我试图通过光标位置设置到其自身手动触发鼠标移动,只要在该模型中的数据进行了更新:
private void MoveCursor()
{
// move the mouse cursor 0 pixels
System.Windows.Forms.Cursor.Position = new System.Drawing.Point(System.Windows.Forms.Cursor.Position.X,
System.Windows.Forms.Cursor.Position.Y);
}
这并不会触发回调。将位置设置为(X-1,Y-1)DID会触发回调,但如果立即将像素设置回原始位置(后续的X + 1,Y + 1),则不会触发mousemove回调任一位置设置。
我也尝试手动设置readoutTextBlock通知我的模型基于Mouse.GetPosition(m_PlotArea)更改但遇到线程问题(模型更新在单独的线程中)以及m_PlotArea命中测试问题。
有什么建议吗?
这是一个很好的清洁方法来合并事件。它并不完全是我以前的样子,但它比我实施的破解更加简洁。干杯 – 2010-08-31 01:40:46