Japanese Yomi Auto-Completion Libraryの小技(裏技?)

複数のtextBoxでオートコンプリートを共通に使いたい場合の小技。

本当はContextManager.Sourceが設定できれば単純ですむんですが、ちょっと強引な方法です。
各textBoxのEnterイベントに以下のtextBox1_Enterイベントを登録します。

Microsoft.International.Windows.YomiAutoCompletionListener listener=null;
Microsoft.International.Windows.YomiStringCollection yomi0=null;
private void textBox1_Enter(object sender, EventArgs e) {
if (listener != null) {
yomi0 = listener.ContextManager.Source;
}
listener = new Microsoft.International.Windows.YomiAutoCompletionListener((Control)sender);
if(yomi0!=null){
foreach(var yomi in yomi0){
listener.ContextManager.AddToSource(yomi.Text, yomi.Yomi);
}
}
}

textBoxにフォーカスが移ったときにもしオートコンプリートされたリストContextManager.Sourceがあればそれを保存し、
新しいYomiAutoCompletionListenerのソースに再度登録し直すということです。
(Disposeしてないんで、ちゃんとガーベージされてるか怪しいですが(^_^;)、プログラムのヒントということでご容赦を... )


MEMO(PageViewCounter:126286)