SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ComponentZine(ComponentOne)

スペルチェック機能を持ったワープロ風WPFアプリケーションの作成

ComponentOne Studioを活用したWindowsフォームアプリケーションの作成

  • このエントリーをはてなブックマークに追加

GUIの作成

 では、さっそくアプリケーションを作成していきます。

 今回作成するアプリケーションは、C1RichTextBoxコントロールとC1RichTextBoxToolbarコントロールです。

 この2つのコントロールをスタックパネルで重ねます。

フォームのレイアウト
フォームのレイアウト

C1RichTextBox/C1RichTextBoxToolbarコントロールの作成

 最初に、C1RichTextBox/C1RichTextBoxToolbarコントロールを作成します。

 ① Window要素に「Name="Window1"」と名前を付けておきます。

 ② StackPanelを配置します。サイズをウィンドウと同じにして、左揃えにします。

<StackPanel Height="465" HorizontalAlignment="Left" Name="StackPanel1" VerticalAlignment="Top" Width="665">

 ③ この中に、まずC1RichTextBoxToolbarコントロールを作成します。

 ツールボックスからC1RichTextBoxToolbarコントロールをドラッグ&ドロップすると、自動的にスタックパネルの幅に設定されます。

 ④ 次に、ツールボックスからC1RichTextBoxコントロールをドラッグ&ドロップします。高さをスタックパネルと同じにします。

C1RichTextBox/C1RichTextBoxToolbarコントロールを配置
C1RichTextBox/C1RichTextBoxToolbarコントロールを配置

 ⑤ XAMLエディタで、C1RichTextBoxToolbar要素に以下のRichTextBoxプロパティの設定を追加します。

 これで、C1RichTextBoxコントロールにC1RichTextBoxToolbarコントロールが連結されます。VBとC#でC1RichTextBoxコントロールの名前が違うので注意してください。

Visual Basicプロジェクトの場合
RichTextBox="{Binding ElementName= C1RichTextBox1}" 

<c1:C1RichTextBoxToolbar Name="C1RichTextBoxToolbar1" RichTextBox="{Binding ElementName= C1RichTextBox1}" />
C#プロジェクトの場合
RichTextBox="{Binding ElementName= c1RichTextBox1}"

<c1:C1RichTextBoxToolbar Name="c1RichTextBoxToolbar1" RichTextBox="{Binding ElementName= c1RichTextBox1}" />

 ⑥ 以上で出来上がりです。アプリケーションを実行してテキストを入力し、ツールバーを操作してみてください。

 このように、あっという間にエディタアプリケーションができあがります。

アプリケーション実行画面
アプリケーション実行画面

スペルチェック機能の実装とウィンドウリサイズ処理

 GUIが出来上がったら、スペルチェック機能を実装します。この処理はビハインドコードで行います。

 また、スペルチェック用の辞書は今回はComponentOne Studioのサンプルに同梱されている、英文用辞書ファイル「C1Spell_en-US.dct」を使用します。

 この辞書をアプリケーションの実行ファイルと同じフォルダに入れておきます。

※1

 ComponentOne Studioに同梱されているスペルチェッカー用辞書ファイルは、ComponentOne Studioをインストールしたフォルダ内に格納されています。

筆者のインストール例

C:\Program Files (x86)\ComponentOne\Dictionaries

 ① スペルチェック機能を有効にするには、まずC1SpellCheckerクラスのインスタンスを作成します。

 次に、C1SpellCheckerクラスの下層のMainDictionaryクラスにある、LoadAsyncメソッドを使用してスペルチェック用の辞書を読み込みます。

 そして、LoadAsyncメソッドが返す辞書への参照をC1RichTextBoxコントロールのSpellCheckerプロパティに設定します。

 これで、C1RichTextBoxコントロールのスペルチェック機能が自動的に作動するようになります。

Visual Basic
Imports C1.WPF.RichTextBox
Imports C1.WPF.SpellChecker

Class MainWindow
    Public Sub New()
        InitializeComponent()

        Dim spell As New C1SpellChecker()
        spell.MainDictionary.LoadAsync("C1Spell_en-US.dct")
        Me.C1RichTextBox1.SpellChecker = spell
    End Sub
End Class
C#
using C1.WPF.RichTextBox;
using C1.WPF.SpellChecker;

namespace RichTB_WPF_cs
{
    /// <summary>
    /// MainWindow.xaml の相互作用ロジック
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            var spell = new C1SpellChecker();
            spell.MainDictionary.LoadAsync("C1Spell_en-US.dct");
            this.c1RichTextBox1.SpellChecker = spell;

        }
    }
}

 ② 試しにアプリケーションを起動し、ミススペルのある文章を入力してみると、入力が終わった時点で間違っている箇所に波線が付きます。

 また、ツールバーの[ツール-]-[スペルチェック]を選ぶと、修正用のダイアログボックスが表示されます。

間違っている箇所に波線が付く
間違っている箇所に波線が付く
修正用のダイアログボックスが表示される
修正用のダイアログボックスが表示される

 ③ 最後に、ウィンドウをリサイズした時に、C1RichTextBox・C1RichTextBoxToolbarコントロールも連動してリサイズする処理を組み込んで出来上がりです。

Visual Basic
Private Sub Window_SizeChanged(sender As System.Object, e As System.Windows.SizeChangedEventArgs) Handles MyBase.SizeChanged
    StackPanel1.Height = Window1.Height
    StackPanel1.Width = Window1.Width

    C1RichTextBox1.Width = StackPanel1.Width
    C1RichTextBox1.Height = StackPanel1.Height

    C1RichTextBoxToolbar1.Width = StackPanel1.Width
End Sub
C#
private void Window1_SizeChanged(object sender, SizeChangedEventArgs e)
{
    StackPanel1.Height = Window1.Height;
    StackPanel1.Width = Window1.Width;

    c1RichTextBox1.Width = StackPanel1.Width;
    c1RichTextBox1.Height = StackPanel1.Height;

    c1RichTextBoxToolbar1.Width = StackPanel1.Width;
}

まとめ

 このように、C1RichTextBox・C1RichTextBoxToolbar・C1SpellCheckerコントロールは実に簡単にアプリケーションに実装でき、あらかじめ組み込まれている高度な機能をすぐに使うことが可能です。

 今や一つのアプリケーションに、いろいろな機能を組み込んでいかないと売れない時代にもなっているようなので、少しでも開発にかかる工数を削減するのであれば、これらのコンポーネントを利用することも検討してみてはいかがでしょう。

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
ComponentZine(ComponentOne)連載記事一覧

もっと読む

この記事の著者

瀬戸 遥(セト ハルカ)

8ビットコンピュータの時代からBASICを使い、C言語を独習で学びWindows 3.1のフリーソフトを作成、NiftyServeのフォーラムなどで配布。Excel VBAとVisual Basic関連の解説書を中心に現在まで40冊以上の書籍を出版。近著に、「ExcelユーザーのためのAccess再...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/7500 2013/11/12 15:40

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング