Dictionary C# (Русско - английский переводчик)

Рейтинг: 0Ответов: 1Опубликовано: 05.05.2015

Делаю приложение, которое должно предоставить перевод английских слов на русский. Так же должна быть возможность записи новых слов в переводчик и удаление. С записью разобрался, ничего сложного нет. А вот с удалением беда. Если я записываю мои слова в ListBox, то как мне вытащить оттуда ID слова (выбранного), что бы можно было по ID удалить ? Думал при помощи listBox1.SelectedItem, но тут проблема. Если к примеру у меня будет 5 записей, и я выберу 3ю запись и удалю ее, то индексы ListBox и моих в словаре не будут соответствовать.

Вот кусочек кода:

public Dictionary<int, string> pl = new Dictionary<int, string>();
public Dictionary<int, string> eng = new Dictionary<int, string>();

public Dictionary()
{
   pl.Add(1, "Czesc"); eng.Add(1, "Hello");
   pl.Add(2, "Ksiazka"); eng.Add(2, "Book");
   pl.Add(3, "Wisnia"); eng.Add(3, "Cherry");
   pl.Add(4, "Samochod"); eng.Add(4, "Car"); 
}

// методод добавления записей

public void DictionaryAdd(string wordEng, string wordPl)
{
    index++; // ??? как тут быть с индексами, что бы не приходилось при                        
             //добавлении записи каждый раз вписывать новый индекс
    eng.Add(index, wordPl);
    pl.Add(index, wordEng);
}

Ответы

▲ 2

А почему бы не сделать так:

class Entry { public string Russian; public string English; }

var all = ObservableCollection<Entry>(); // для автообновления UI

Если нужен поиск, вы можете построить индексы:

var russianToEntries = Dictionary<string, List<Entry>>();
var englishToEntries = Dictionary<string, List<Entry>>();

Теперь для показа можно использовать список. Вам, по идее, нужно уметь сортировать список по английским и по русским ключам.

Для добавления вам надо добавить в список и в оба индекса. То же при удалении. Поиск с индексами должен быть достаточно быстрым.