インストールされているフォント名を列挙する方法は以前やりました。

使用できるフォントをコンボボックスのなかに表示させる

使用できるフォントをコンボボックスのなかに表示させる

選択文字列が変更するたびにフォント名を調べてコンボボックスに表示させるのも難しくありません。

ではコンボボックス内の項目を選択して選択文字列に反映するためにはどうすればいいのでしょうか?

ToolStripのうえに表示させられるコントロールにはコンボボックスがありますが、これが普通のコンボボックスではありません。ではToolStripのうえには好きなコントロールを乗せることはできないのでしょうか? そんなことはありません。

ToolStrip(ツールバー、メニュー、ステータスバー)に任意のコントロールを配置する – .NET Tips (VB.NET,C#…

このサイトの説明によると「ToolStripControlHostクラスを使えば、任意のコントロールをToolStripにのせることができます」とあります。

「ToolStripControlHostの派生クラスを作成して、専用のクラスを作成する」という項目があります。これなら簡単にToolStripに追加できるようになります。

これならNumericUpDownをToolStripに乗せることができるようになります。ただこれだけでは使いにくいので

ホストしているNumericUpDownコントロールをプロパティで公開する
よく使うメソッドやプロパティもToolStripNumericUpDownクラスで公開する

という方法を紹介しています。

ではいまやりたいことはComboBoxをToolStripに乗せることです。あえて作らなくてもToolStripComboBoxがあるのですが、ちょっと使いにくいです。

こんなクラスをつくればOKです。

コンボボックスが閉じられる場合、項目が選択されたため閉じられる場合と、選択されずに閉じられる場合があります。後者の場合はなにもしなくてよいと思われます。

SelectionChangeCommittedイベントは、コンボボックスリストの選択項目への変更が確定されたときに発生します。単にコンボボックスが閉じられただけでは発生しません。

SelectionChangeCommittedイベントが発生したら

これでコンボボックスの内容をRichTextBoxに反映させることができます。

ところでコンボボックスの項目を選択するときにフォーカスがRichTextBoxから外れてしまうので、

こんなことをしても下側のRichTextBoxに設定を反映させることはできません。