我正在编写一个基于RichTextBox
的自定义控件,需要能够处理MouseLeftButtonDown
个事件,但不能允许用户启动选择(我正在以编程方式执行所有操作)。
我尝试在MouseLeftButtonDown
设置一个标记以跟踪拖动,然后在RichTextBox.Selection
事件中继续将MouseMove
设置为空,但是在我释放之后才会触发move事件鼠标按钮。
关于如何解决这个问题的任何想法?感谢。
答案 0 :(得分:2)
以下是我提出的解决方案:
public class CustomRichTextBox : RichTextBox
{
private bool _selecting;
public CustomRichTextBox()
{
this.MouseLeftButtonDown += (s, e) =>
{
_selecting = true;
};
this.MouseLeftButtonUp += (s, e) =>
{
this.SelectNone();
_selecting = false;
};
this.KeyDown += (s, e) =>
{
if (e.Key == Key.Shift)
_selecting = true;
};
this.KeyUp += (s, e) =>
{
if (e.Key == Key.Shift)
_selecting = false;
};
this.SelectionChanged += (s, e) =>
{
if (_selecting)
this.SelectNone();
};
}
protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
{
base.OnMouseLeftButtonDown(e);
e.Handled = false;
}
protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e)
{
base.OnMouseLeftButtonUp(e);
e.Handled = false;
}
public void SelectNone()
{
this.Selection.Select(this.ContentStart, this.ContentStart);
}
}
答案 1 :(得分:0)
您是否在事件处理程序中尝试e.Handled = true
,看看是否能获得所需的行为。