Исправить ошибку с отображением Hashtable - C#
Формулировка задачи:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.VisualBasic;
namespace WindowsFormsApplication4
{
class HashTablee
{
public Hashtable CreateList()
{
Hashtable tempH = new Hashtable(100);
tempH.Add("Один", new Hashtable());
{
((Hashtable)tempH["Один"]).Add("Odin***Psja odin", "Psja odin");
((Hashtable)tempH["Один"]).Add("Odin***Psja dva", "Psja dva");
((Hashtable)tempH["Один"]).Add("Odin***Psja tri", "Psja tri");
((Hashtable)tempH["Один"]).Add("Odin***Psja chetire", "Psja chetire");
((Hashtable)tempH["Один"]).Add("Odin***Psja pjat'", "Psja pjat'");
((Hashtable)tempH["Один"]).Add("Odin***Psja shest'", "Psja shest'");
((Hashtable)tempH["Один"]).Add("Odin***Psja sem", "Psja sem");
((Hashtable)tempH["Один"]).Add("Odin***Psja vosem", "Psja vosem");
((Hashtable)tempH["Один"]).Add("Odin***Psja devjat'", "Psja devjat'");
((Hashtable)tempH["Один"]).Add("Odin***Psja desjat'", "Psja desjat");
}
tempH.Add("Два", new Hashtable());
{
((Hashtable)tempH["Два"]).Add("Dva***Psja odin", "Psja odin");
((Hashtable)tempH["Два"]).Add("Dva***Psja dva", "Psja dva");
((Hashtable)tempH["Два"]).Add("Dva***Psja tri", "Psja tri");
((Hashtable)tempH["Два"]).Add("Dva***Psja chetire", "Psja chetire");
((Hashtable)tempH["Два"]).Add("Dva***Psja pjat'", "Psja pjat'");
((Hashtable)tempH["Два"]).Add("Dva***Psja shest'", "Psja shest'");
((Hashtable)tempH["Два"]).Add("Dva***Psja sem", "Psja sem");
((Hashtable)tempH["Два"]).Add("Dva***Psja vosem", "Psja vosem");
((Hashtable)tempH["Два"]).Add("Dva***Psja devjat'", "Psja devjat'");
((Hashtable)tempH["Два"]).Add("Dva***Psja desjat'", "Psja desjat");
}
tempH.Add("Три", new Hashtable());
{
((Hashtable)tempH["Три"]).Add("Tri***Psja odin", "Psja odin");
((Hashtable)tempH["Три"]).Add("Tri***Psja dva", "Psja dva");
((Hashtable)tempH["Три"]).Add("Tri***Psja tri", "Psja tri");
((Hashtable)tempH["Три"]).Add("Tri***Psja chetire", "Psja chetire");
((Hashtable)tempH["Три"]).Add("Tri***Psja pjat'", "Psja pjat'");
((Hashtable)tempH["Три"]).Add("Tri***Psja shest'", "Psja shest'");
((Hashtable)tempH["Три"]).Add("Tri***Psja sem", "Psja sem");
((Hashtable)tempH["Три"]).Add("Tri***Psja vosem", "Psja vosem");
((Hashtable)tempH["Три"]).Add("Tri***Psja devjat'", "Psja devjat'");
((Hashtable)tempH["Три"]).Add("Tri***Psja desjat'", "Psja desjat");
}
tempH.Add("Четыре", new Hashtable());
{
((Hashtable)tempH["Четыре"]).Add("Четыре***Psja odin", "Psja odin");
((Hashtable)tempH["Четыре"]).Add("Четыре***Psja dva", "Psja dva");
((Hashtable)tempH["Четыре"]).Add("Четыре***Psja tri", "Psja tri");
((Hashtable)tempH["Четыре"]).Add("Четыре***Psja chetire", "Psja chetire");
((Hashtable)tempH["Четыре"]).Add("Четыре***Psja pjat'", "Psja pjat'");
((Hashtable)tempH["Четыре"]).Add("Четыре***Psja shest'", "Psja shest'");
((Hashtable)tempH["Четыре"]).Add("Четыре***Psja sem", "Psja sem");
((Hashtable)tempH["Четыре"]).Add("Четыре***Psja vosem", "Psja vosem");
((Hashtable)tempH["Четыре"]).Add("Четыре***Psja devjat'", "Psja devjat'");
((Hashtable)tempH["Четыре"]).Add("Четыре***Psja desjat'", "Psja desjat");
}
tempH.Add("Пять", new Hashtable());
{
((Hashtable)tempH["Пять"]).Add("Пять'***Psja odin", "Psja odin");
((Hashtable)tempH["Пять"]).Add("Пять'***Psja dva", "Psja dva");
((Hashtable)tempH["Пять"]).Add("Пять'***Psja tri", "Psja tri");
((Hashtable)tempH["Пять"]).Add("Пять'***Psja chetire", "Psja chetire");
((Hashtable)tempH["Пять"]).Add("Пять'***Psja pjat'", "Psja pjat'");
((Hashtable)tempH["Пять"]).Add("Пять'***Psja shest'", "Psja shest'");
((Hashtable)tempH["Пять"]).Add("Пять'***Psja sem", "Psja sem");
((Hashtable)tempH["Пять"]).Add("Пять'***Psja vosem", "Psja vosem");
((Hashtable)tempH["Пять"]).Add("Пять'***Psja devjat'", "Psja devjat'");
((Hashtable)tempH["Пять"]).Add("Пять'***Psja desjat'", "Psja desjat");
}
return tempH;
}
public Hashtable AddSong(Hashtable cd)
{
int cdKol, songKol;
cdKol = int.Parse(Interaction.InputBox("Введите количество дисков"));
for (int i = 0; i < cdKol; i++)
{
StringBuilder cdName = new StringBuilder(50);
Hashtable song = new Hashtable();
cdName.Append(Interaction.InputBox("Введите название нового диска"));
songKol = int.Parse(Interaction.InputBox("Введите количество песен в этом диске"));
for (int j = 0; j < songKol; j++)
{
StringBuilder songName = new StringBuilder(50);
songName.Append(Interaction.InputBox("Введите название песни"));
song.Add((cdName + "***" + songName), songName);
}
cd.Add(cdName, song);
}
return cd;
}
public string Choise(Hashtable tempH, int choise, RichTextBox richTextBox)
{
#region для обращения к ключу из Hashtable
int iTemp = 0;
StringBuilder sTemp = new StringBuilder();
foreach (DictionaryEntry b in tempH)
{
iTemp++;
sTemp.Clear().Append(b.Key);
if (iTemp >= choise) break;
}
#endregion
return sTemp.ToString();
}
public void ShowList(Hashtable tempH, RichTextBox richTextBox)
{
int count = 0;
richTextBox.Text = "Список дисков:" + "\n";
foreach (DictionaryEntry a in tempH)
{
richTextBox.Text += ++count + ". " + a.Key + " " + a.Value + "\n";
}
richTextBox.Text += "-------------------";
}
public Hashtable FindSong(Hashtable tempH, string mask)
{
Hashtable result = new Hashtable();
int u = 0;
foreach (DictionaryEntry pp in tempH)
{
foreach (DictionaryEntry ppp in (Hashtable)pp.Value)
{
if (mask.Contains((ppp.Key.ToString()).Substring(0, mask.Length)))
{
result.Add(u++, ppp.Value);
}
}
}
return result;
}
public void Vibor(RichTextBox richTextBox)
{
Hashtable tempH = CreateList();
do
{
ShowList(tempH, richTextBox);
int choise;
do
{
try
{
choise = int.Parse(Interaction.InputBox("Выберите номер диска")); // Проверка, что в поле число
break; // Если число, то выходи к фигам отсюда
}
catch (Exception)
{
MessageBox.Show("Не число!", "Упс!");
}
} while (true);
int vibor;
do
{
try
{
vibor = int.Parse(Interaction.InputBox("Выберите действие:" + "\n" + "1 - открыть" + "\n" + "2 - удалить" + "\n" + "3 - добавить" + "\n" + "4 - поиск" + "\n" + "0 - выход"));
break; // Если число, то выходи к фигам отсюда
}
catch (Exception)
{
MessageBox.Show("Не число!", "Упс!");
}
} while (true);
switch (vibor)
{
case 1:
{
Hashtable inTemp = (Hashtable)tempH[Choise(tempH, choise, richTextBox)];
ShowList(inTemp, richTextBox);
break;
}
case 2:
{
tempH.Remove(Choise(tempH, choise, richTextBox).ToString());
break;
}
case 3:
{
tempH = AddSong(tempH);
break;
}
case 4:
{
StringBuilder mask = new StringBuilder();
mask.Append(Interaction.InputBox("Ведите имя исполнителя"));
ShowList(FindSong(tempH, mask.ToString()), richTextBox);
break;
}
case 0:
{
Environment.Exit(0);
break;
}
default: break;
}
} while (true);
}
}
}public void ShowList(Hashtable tempH, RichTextBox richTextBox)
{
int count = 0;
richTextBox.Text = "Список дисков:" + "\n";
foreach (DictionaryEntry a in tempH)
{
richTextBox.Text += ++count + ". " + a.Key + " " + a.Value + "\n";
}Решение задачи: «Исправить ошибку с отображением Hashtable»
textual
Листинг программы
{
Hashtable inTemp = (Hashtable)tempH[Choise(tempH, choise, richTextBox)];
ShowList(tempH, richTextBox);
break;
}