2010-09-09 2 views
7

У меня есть элемент управления RichTextBox для приложения, и вот моя проблема: когда приложение запускается, если я начинаю выбирать с помощью мыши некоторые символы внутри слова и продолжать выбирать вне него, выбор автоматически включает в себя целое слово, в котором я начал выбирать, и любые другие слова, из которых я хочу выбрать только часть, ms word-ish, если я не ошибаюсь.Проблема выбора C# RichTextBox

например:

  • текст: "Просто еще один Foobar"
  • , что я хочу, чтобы выбрать это: "Просто ано [Ther Foo] бар" (вещь между [])
  • Что действительно выбрано: «Just [another foobar]»

Проблема заключается в выборе мыши, если я выбираю текст с помощью клавиатуры, он работает отлично. Кроме того, свойство автоматического выбора слова управления отключено. Любая идея, почему?

+0

Hrm. Было ли это исправлено? http://connect.microsoft.com/VisualStudio/feedback/details/115441/richtextboxs-autowordselection-property-does-not-work-correctly –

+0

Хм ... Я думаю, что все. Есть идеи об обходном пути? – cantrem

ответ

13

В реализации свойства AutoWordSelection есть глупая ошибка. Обходной путь является одинаково глупым. Добавьте новый класс в свой проект и вставьте код, показанный ниже. Компиляция. Отбросьте новый элемент управления сверху панели инструментов на форму, заменив существующий RTB.

using System; 
using System.Windows.Forms; 

public class FixedRichTextBox : RichTextBox { 
    protected override void OnHandleCreated(EventArgs e) { 
     base.OnHandleCreated(e); 
     if (!base.AutoWordSelection) { 
      base.AutoWordSelection = true; 
      base.AutoWordSelection = false; 
     } 
    } 
} 

Я оставил аннотацию в нижней части этого MSDN Library page с деталями ошибки.

+0

Это было совсем неутешительно ... но спасибо, я попробую это как можно скорее. Я, наконец, получаю некоторые ошибки .net! – cantrem

+0

... и действительно, он работает. Еще раз спасибо! – cantrem

+0

У меня есть щедрость за вопрос, связанный с ошибкой RichTextBox: http://stackoverflow.com/questions/19256004/richtextbox-selection-bug-when-pressing-control-key у вас есть идеи? –

2

Может быть, все изменилось с тех пор этот вопрос был дан ответ, но у меня есть еще более простое решение:

Просто добавьте richTextBox1.AutoWordSelection = false; в код.

Звучит сумасшедшим, но установка этого параметра в false в окне свойств не работает. Вы должны сделать это в коде, даже если свойство уже неверно. Тогда это работает!

Смежные вопросы