2015-09-10 2 views
0

Я думаю, что я столкнулся с ошибкой в ​​.NET, но мне хотелось бы знать, не так ли это.Win Forms: RichText Box -> AutoWordSelection/Hide Selection bug

Прежде всего, я создаю простой текстовый редактор в Win Forms. Я добавил функциональность, чтобы найти нужный текст. Он работает как немодальный диалог, который я создал. Я хотел, чтобы он работал следующим образом: если найденное слово найдено, оно выбирает текст в RTB, фокусируется на нем, а затем возвращает фокус обратно в мое немодальное окно. В связи с включением свойства Hide Selection он работал отлично, точно так, как я хотел, чтобы это было (фокус все еще находился на немодальном окне после поиска, но найденная фраза оставалась выделенной в RTB).

Позже я заметил, что с атрибутом AutoWordSelection что-то не так, оно просто не работает. Итак, я сделал, как сказал here. И действительно, это помогло, но потом я заметил, что мой алгоритм поиска не работает (теперь мне нужно сосредоточиться на RTB после поиска, а не вернуть его в немодальное окно). Другими словами, он просто прекратил работать.

Я пытался добавить код в моем FixedRichTextBox (я добавил его в рамках первой части предложенной Гансом):

if(base.HideSelection) 
    base.HideSelection=false; 
base.HideSelection=false; 

Я также попытался это по-другому, я имею в виду: `если (! baseSelection) [...]

В обоих случаях я получил сообщение о невозможности создания дескриптора окна. Таким образом, я должен согласиться жить только с AutoWordSelection или HideSelection, работая правильно (причина, над чем часть работает, если я удаляю более раннюю часть, в которой вызывается AutoWordSelection).

Это не очень серьезная проблема, так как я нашел способ заставить ее работать немного не так, как я хочу, (но это не ограничивает функциональность приложения). Однако эта ошибка (если это ошибка) раздражает, и я хотел бы знать, если кто-либо когда-либо испытал это и нашел правильное решение.

Скажем @Hans Passant: D

ответ

0

Хорошо. Кажется, я нашел ответ на него (что очевидно, потому что я разместил его здесь). В этом случае необходимо было выполнить то же самое, что и в сообщении, которое я связал в вопросе, а затем установить HideSelection в true (в mainForm.cs) и установить его ложно программно в общедоступном ctor. Довольно глупо, но теперь он работает (и это НЕ, если я устанавливаю значение false по умолчанию).

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