無料のスペルチェックソリューションを探していたので、これを行うのはとても賢いと思いましたが、そうではないと思います。
Windowsフォームベースのアプリケーションを作成しましたが、フォームでユーザーが指定した量のユーザーコントロール(テキストボックスを含む)をパネルに追加したいと思います。その後、ユーザーはいくつかのボタンをクリックすると、このパネルのコントロールがクリアされ、新しいコントロールが追加されます。ユーザーが何かを実行すると、プロセスが繰り返されます。今、私はこれらのテキストボックスがスペルチェックをサポートすることを望み、無料の解決策を探しました。
WPFテキストボックスは、通常のWinフォームのテキストボックスではサポートされていないスペルチェックをサポートしています。これらの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は、(ElementHostオブジェクト内の)WPFテキストボックスを使用するユーザーコントロールです。
ユーザーがボタンを押すと、パネルはクリアされます。
myUserControl.Controls.Clear()
その後、ユーザーはプロセスを繰り返すことができます。
解決策を見つけようとしたところ、インターネット上で多くの結果が出ており、パネルをクリアしてもWPFコントロールが消えないことが問題だと思っています。この結論に続いて、私はこれらのコントロールを破棄するか、メモリの問題が発生し続ける以外に何も設定しないことに関して、さまざまな解決策を試しました。ここで誰かがアドバイスやアイデアをくれたら、本当にありがたいです。