Вот я немного переделал программу добавив проверку регистра тем самым избавив ее от избыточности
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
Dictionary<char, string> words = new Dictionary<char, string>();
public Form1()
{
InitializeComponent();
words.Add('а', "a");
words.Add('б', "b");
words.Add('в', "v");
words.Add('г', "g");
words.Add('д', "d");
words.Add('е', "e");
words.Add('ё', "yo");
words.Add('ж', "zh");
words.Add('з', "z");
words.Add('и', "i");
words.Add('й', "j");
words.Add('к', "k");
words.Add('л', "l");
words.Add('м', "m");
words.Add('н', "n");
words.Add('о', "o");
words.Add('п', "p");
words.Add('р', "r");
words.Add('с', "s");
words.Add('т', "t");
words.Add('у', "u");
words.Add('ф', "f");
words.Add('х', "h");
words.Add('ц', "c");
words.Add('ч', "ch");
words.Add('ш', "sh");
words.Add('щ', "sch");
words.Add('ъ', "j");
words.Add('ы', "i");
words.Add('ь', "j");
words.Add('э', "e");
words.Add('ю', "yu");
words.Add('я', "ya");
}
private void textBox2_TextChanged(object sender, EventArgs e)
{
}
private void textBox1_TextChanged_1(object sender, EventArgs e)
{
string source = textBox1.Text;
string destiny = null;
for (int i = 0; i < source.Length; i++)
{
if (words.ContainsKey(source[i]))
destiny = destiny + words[source[i]];
else
destiny = destiny + source[i];
}
System.Text.StringBuilder sb = new System.Text.StringBuilder(destiny);
for (int j = 0; j < sb.Length; j++)
{
if (System.Char.IsLower(sb[j]) == true)
sb[j] = System.Char.ToLower(sb[j]);
else if (System.Char.IsUpper(sb[j]) == true)
sb[j] = System.Char.ToUpper(sb[j]);
}
string corrected = sb.ToString();
textBox2.Text = corrected;
}
}
}
Сейчас ломаю голову нед обратной транслитерацией точнее над Ж,Ч,Ш,Щ,Я,Ю и тд. Может есть идеи.