我添加了一個功能,可以FlowDocument在滑鼠單擊時添加文本。中沒有Click事件FlowDocument,所以我聽FlowDocument.MouseLeftButtonDown和MouseLeftButtonUp檢查滑鼠是否在向下和向上之間移動。當我點擊滑鼠左鍵時,文字添加成功。但是,我無法選擇FlowDocument.
我試過PreviewMouseLeftButtonDown和PreviewMouseLeftButtonUp。行為是一樣的。不是有PostMouseLeftButtonDown嗎?
我的代碼:
Point mouseDownPoint;
private void doc_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
mouseDownPoint = Mouse.GetPosition(doc);
e.Handled = true;
}
private void doc_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
var mouseUpPoint = Mouse.GetPosition(doc);
if ((mouseUpPoint - mouseDownPoint).Length < 8) /* add text */;
}
uj5u.com熱心網友回復:
控制元件在內部處理事件。
如果您像這樣以編程方式注冊事件處理程式,您的doc_MouseLeftButtonUp事件處理程式應該被呼叫(注意最后一個handledEventsToo引數):
doc.AddHandler(ContentElement.MouseLeftButtonUpEvent,
(MouseButtonEventHandler)doc_MouseLeftButtonUp, true);
請注意,您可能還必須處理MouseLeftButtonUp由控制元件本身引發的 。
uj5u.com熱心網友回復:
我找到了解決方案。收聽FlowDocument.MouseLeftButtonDown和不使用e.Handled=true收聽FlowDocumentScrollViewer.PreviewMouseLeftButtonUp會同時獲取文本選擇和添加文本行為。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/537160.html
標籤:C#wpf流水单
