1

これは一筋縄ではいかないかもしれませんが、私は ComponentOne の Spellchecker コントロールを Silverlight 用に使用しています。テスト プロジェクトを作成し、プレーン テキスト ボックスとボタンを追加し、C1.Silverlight ビットと C1.Silverlight.SpellChecker ビットへの参照を追加し、辞書ファイルをプロジェクトに追加しました。

コードでは、button1 のクリック イベントでスペルチェッカーを呼び出すと、見事に機能しました。スペルチェッカー ダイアログが表示され、正確に機能します。

そのテストが成功したので、これを既存のプロジェクトに実装しようとしました。完全に同じコードを使用したため、私が判断できる理由はまったくありません。

コンポーネントを呼び出すために使用するコードは次のとおりです。

using C1.Silverlight;
using C1.Silverlight.SpellChecker;
using C1.Silverlight.Resources;

public partial class MainPage : UserControl
{
    C1SpellChecker spellChecker = new C1SpellChecker();


    public MainPage()
    {
        InitializeComponent();
        spellChecker.MainDictionary.LoadAsync("C1Spell_en-US.dct");

    }

    private void btnSpelling_Click(object sender, RoutedEventArgs e)
    {
        var dlg = new C1SpellDialog();
        spellChecker.CheckControlAsync(txtArticle, false, dlg);
    }

への参照C1.SilverlightC1.Silverlight.Spellcheckerこのプロジェクトへの参照も追加され、辞書も同じ方法で追加されました。この問題は、メイン辞書がロードされているかどうかにかかわらず、spellChecker.Enabled メソッドが返されるため、何らかの理由で辞書がロードされていないように思われます。私が呼び出すMessageBox.Show("SpellChecker Enabled = " + spellChecker.Enabled.ToString());と、辞書をロードするための呼び出しがあっても (ご覧のとおり)、false が表示されます。

辞書が読み込まれない原因は何ですか? どういうわけか間違ってプロジェクトに追加しましたか?

編集: ComponentOne のリファレンスに次のように記載されているため、辞書をプロジェクトに間違って追加したと思われます。

C1SpellChecker がスペル チェック辞書を見つけられない場合、例外はスローされません。Enabled プロパティは false に設定され、コンポーネントはテキストのスペルチェックを行うことができなくなります。

テストプロジェクトと同じ方法で追加されたため、何が問題なのかわかりません(project.web-> Add-> Existing Itemを右クリック)

いつもありがとうございます!

-スーター

4

2 に答える 2

2

ディクショナリを Silverlight アプリに埋め込みリソースとして追加し、次のコードを使用して読み込むことができます。

    public MainPage()
    {
        InitializeComponent();

        // load C1SpellChecker dictionary from embedded resource
        var asm = this.GetType().Assembly;
        foreach (var res in asm.GetManifestResourceNames())
        {
            if (res.EndsWith(".dct"))
            {
                using (var s = asm.GetManifestResourceStream(res))
                {
                    sc.MainDictionary.Load(s);
                    break;
                }
            }
        }
    }
于 2011-03-17T12:24:50.710 に答える
0

この投稿はフォーラムでも重複していると思いますが、ここで最初に回答します。これを試してください:

1) ブラウザを使用して .dct ファイルにアクセスしてみてください。表示されない場合は、Web サーバーがそのタイプのファイルを提供していない可能性があります。それを許可するには、Web サーバーを構成する必要があります。

2) 使用している URL が正しいことを確認します。http://helpcentral.componentone.com/CS/silverlight_161/f/78/p/86955/241328.aspx#241328

3) すべてが正しく設定されていることを確認します: http://helpcentral.componentone.com/CS/silverlight_161/f/78/p/81924/227790.aspx#227790

お役に立てれば!

于 2011-01-31T12:12:34.167 に答える