我寫了一個處理畫布上曲線的C#wpf程序。 因此,我加載一條曲線(一個polylinesegment中的一系列點),然後我對它進行各種操作。每條曲線通過鼠標交互放置在屏幕上,並且工作正常。每條曲線隨後在其中心出現一個文本塊,以提供一些信息。 所以,當我想要鼠標移動形狀時,問題就出現了。 我首先用鼠標(工作)選擇形狀,然後通過OnMouseMove事件將其粘貼到光標上。最終我把它放在OnMouseLeftButtonDown事件上。OnLeftButtonDown在將文本塊放入canvas後發生困難。設置
所以總之,OnMouseLeftButtonDown總能正常工作,除非我必須移動形狀和標籤。在這種情況下,我必須多次(隨機)按下才能開始活動。
我然後搜索了導致問題的部分,那是我移動標籤的時候。
private void UpdateLabel(int index, PathInfo piToBeAdded)
{
plotCanvas.Children.Remove(names[index]);
TextBlock text = new TextBlock();
text.TextAlignment = TextAlignment.Left;
text.FontSize = 12;
text.Inlines.Add(new Run("(" + (GetPathsIndexFromId(piToBeAdded.ID) + 1) + ")ID:" + piToBeAdded.ID + " " + piToBeAdded.Name) { FontWeight = FontWeights.Bold });
Canvas.SetLeft(text, piToBeAdded.Center.X);<-----those cause the problem
Canvas.SetTop(text, piToBeAdded.Center.Y);<------those cause the problem
text.ReleaseMouseCapture();
names[index] = text;
plotCanvas.Children.Add(text);
}
NB:PATHINFO就是一個類存儲一些信息,其中還協調 具體來說它只是Canvas.SetLeft和Canvas.SetTop引起OnMouseLeftButtonDown在不能正常點火。我將它們從0,0和事件 中取走,但這些說明有什麼問題?我怎樣才能使OnLeftButtonDownEvent正常工作?
我希望我已經正確描述了這個問題,我試着把所有的相關信息。
提前感謝名單
帕特里克
您究竟如何稱此方法?從OnMouseLeftButtonDown本身? – toadflakz
該方法從OnMouseMove調用,它處理移動形狀和光標後面的標籤。這樣可行。這是當我用OnMouseLeftButtonDown放下這個事件沒有觸發的時候。 – Patrick