В поисках бесплатного решения для проверки орфографии, я думал, что был настолько умен, но думаю, что нет.
Я создал приложение на основе форм Windows и хочу, чтобы форма добавляла указанное пользователем количество пользовательских элементов управления (с текстовыми полями) на панель. Затем пользователь может нажать на некоторую кнопку, и элементы управления на этой панели будут очищены и добавлены новые. Пользователь что-то делает, и процесс повторяется. Теперь я хотел, чтобы эти текстовые поля поддерживали проверку орфографии, и искал бесплатное решение.
Текстовые поля WPF поддерживают проверку орфографии, тогда как в обычных формах выигрыша это не так. Я думал, что смогу использовать эти текстовые поля WPF, добавив их в объект ElementHost, который, в свою очередь, находится на панели. Эта панель будет пользовательским элементом управления.
Итак, в моем приложении я смогу добавить экземпляры этих пользовательских элементов управления в форму и использовать проверку правописания в .NET. Это на самом деле сработало, но после некоторого использования приложения обнаружилось, что приложение в конечном итоге зависнет из-за ошибок нехватки памяти. Я определил ошибки памяти для этих элементов управления WPF, поскольку эта проблема не возникает с обычными текстовыми полями.
Когда окно открывается и указывается количество элементов управления, это почти то же самое, как добавляются элементы управления:
Dim xOffset As Integer = 0
For i As Integer = 0 To theNumber
Dim myUserControl As New SpecialUserControl()
myPanel.Controls.Add(myUserControl)
myUserControl.Location = New Point(7, 7)
myUserControl.Location = New Point(xOffset, 7)
xOffset = xOffset + 207
Next
Обратите внимание, что:
- myPanel - это панель на форме
- SpecialUserControl - это пользовательский элемент управления с текстовым полем WPF (внутри объекта ElementHost)
Когда пользователь нажимает кнопку, панель очищается:
myUserControl.Controls.Clear()
Пользователь может затем повторить процесс.
В Интернете было много результатов, когда я пытался найти решение, и я думаю, что проблема, с которой я столкнулся, связана с тем, что элемент управления WPF не исчезает даже после очистки панели. Следуя этому заключению, я попробовал разные решения, касающиеся утилизации этих элементов управления или установки их на ничего, кроме проблемы с памятью. Если бы кто-то мог дать мне несколько советов или идей здесь, я был бы очень признателен.