Text Parser 
While parsing the text, several specific text elements should betreated. These elements include abbreviations, proper names, figures, email addreses, uniform resource locator (URL) strings (simply web addreses), and so on. They could be simply ignored or checked in a way that is different from other words in the the text, depending on the spell checker implementation and user options. The SpellChecker component provides the SpellChecker.OptionsSpelling property that allows a user to avoid checking email and web addresses, words with numbers, mixed case and upper case words.
Dictionary 
An ideal dictionary should be comprised with all the the words ina given language. In real life, it can be much smaller, and effectively split into several parts, depending on the language. For several Indo-European languages, including English, words are derived from the base by adding affixes - prefixes or postfixes. So, the size of the dictionary can be greatly reduced if the base words, affixes and the rules for adding affixes to base words are placed into seperate files. The complete list of words could be built in-place, when necessary. When a word is found to be misspelled (that is, not found in the dictionary), then the spell checker generates a list of sugestions - words suggeted to replace the mistake. The final choice is always up to the user. 
Near-Miss Strategy to Find Suggestions 
The first algorithm implemented by SpellChecker for building a suggestion list is a near miss strategy. It was developed by Geoff Kuenning (http://ficus-www.cs.ucla.edu/geoff/geoff.html) and makes an assumption that the word is not necessarily mispelled, but rather mistyped. We change the misspelled word by changing a letter, deleting or adding it, inserting a blank space, or interchanging two ajacent letters. If these steps result in a word contained in the dictionary, then we estimate how far we are from the original word. To measure the proximity of words, the modified Levenshtein distance notion is used.
Phonetic Comparison to Find Suggestions
The phonetic suggestion algorithm takes into account the pronounciation of a word. The SpellChecker component utilizes the implementation of the Double Metaphone search algorithm. Two phonetic codes (primary and secondary) are calculated for each word. The calculation rules are differnt for diffrent languages. They are based on the set of pronunciation rules for that language. Then, the phonetic strategy compares the phonetic code of the misspelled word to all the words in the word list. If the phonetic codes match, then the the word is added to the suggestion list.
Suggestion Ranking 
After the list of suggestions is composed, it should be ordered so that the user doesn't have to scrollthrough it, searching for a perfect match. The implemented solution makes use of the Levenshtein algorithm to calculate the word distance. This distance becomes a parameter for list ordering. Additional assumptions on the nature of a spelling error may help modify the algorithm. The user makes his choice from the list of suggestions. The misspelled word can be replaced with a word from the suggestion list, ignored, or edited by the user. The last possibility indicates a spell checker miss, and provides an option for appending the corrected word to an auxilliary user dictionary.