开发者

Silverlight C# - ComponentOne Spellchecker not loading dictionary

开发者 https://www.devze.com 2023-02-07 09:49 出处:网络
This may be a long shot, but I\'m using ComponentOne\'s Spellchecker control for Silverlight. I made a test project, added a plain textbox and a button to it, added the references to the C1.Silverligh

This may be a long shot, but I'm using ComponentOne's Spellchecker control for Silverlight. I made a test project, added a plain textbox and a button to it, added the references to the C1.Silverlight and C1.Silverlight.SpellChecker bits, and added the dictionary file to my project.

In the code, I called up the spellchecker on button1's click event and it worked SPLENDIDLY. The spellchecker dialog shows up, and works exactly as it should.

Since that test was successful, I then tried to implement this into my existing project. I've had no success for absolutely NO reason that I can determine, since I used the EXACT SAME code.

Here's the code I use to call the component:

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);
    }

The references to C1.Silverlight and C1.Silverlight.Spellchecker are added to this project as well, and the dictionary as been added in the same fashion as well. The issue seems to be that for whatever reason the dictionary is not loading, because the spellChecker.Enabled method returns whether or not the main dictionary has been loaded. If I call MessageBox.Show("SpellChecker Enabled = " + spellChecker.Enabled.ToString()); it shows false, even though the call to load the dictionary is there (as you can see).

What would cause the dictionary to not load? Have 开发者_StackOverflow中文版I added it to my project incorrectly somehow?

EDIT: I suspect that I have added the dictionary to the project incorrectly, because the ComponentOne reference states:

If C1SpellChecker cannot find the spelling dictionary, it will not throw any exceptions. The Enabled property will be set to false and the component will not be able to spell-check any text.

I just don't know what's wrong though because it was added in the same way that it was in the test project (Right clicked on the project.web->Add->Existing Item)

As always, thank you!

-Sootah


You could add the dictionary to the Silverlight app as an embedded resource and then load it using this code:

    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;
                }
            }
        }
    }


I think this post is duplicated in our forum as well, but will answer first here. Please try this:

1) Try to access the .dct file using your browser. If you cannot see it, it's probably because your web server is not serving that type of files. You need ton configure the web server to allow it.

2) verify the URL you are using is correct.http://helpcentral.componentone.com/CS/silverlight_161/f/78/p/86955/241328.aspx#241328

3) Check you are setting everything correctly: http://helpcentral.componentone.com/CS/silverlight_161/f/78/p/81924/227790.aspx#227790

Hope this helps!

0

精彩评论

暂无评论...
验证码 换一张
取 消