Silverlight RichTextBox禁用鼠标选择

时间:2010-04-23 17:17:32

标签: silverlight richtextbox

我正在编写一个基于RichTextBox的自定义控件,需要能够处理MouseLeftButtonDown个事件,但不能允许用户启动选择(我正在以编程方式执行所有操作)。

我尝试在MouseLeftButtonDown设置一个标记以跟踪拖动,然后在RichTextBox.Selection事件中继续将MouseMove设置为空,但是在我释放之后才会触发move事件鼠标按钮。

关于如何解决这个问题的任何想法?感谢。

2 个答案:

答案 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,看看是否能获得所需的行为。