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