Silverlight RichTextBox отключает выбор мыши

Я пишу пользовательский элемент управления на основе RichTextBox этому нужна способность обработать MouseLeftButtonDown события, но не должны позволять инициируемый пользователями выбор (я делаю все программно).

Я пытался установить флаг в MouseLeftButtonDown отслеживать перетаскивание и затем непрерывно установку RichTextBox.Selection ни к чему в MouseMove событие, но событие перемещения не запущено, пока я не отпущу кнопку мыши.

Какие-либо идеи о том, как решить это?Спасибо.

1
задан David 23 April 2010 в 17:17
поделиться

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);
    }
}
2
ответ дан 3 September 2019 в 01:05
поделиться

Вы пробовали использовать e.Handled = true в своем обработчике событий, чтобы увидеть, дает ли это желаемое поведение.

0
ответ дан 3 September 2019 в 01:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: