Исправить ошибку с отображением 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";
            }
на месте a.Value выходит какая-то фигня. На скрине. Как победить?

Решение задачи: «Исправить ошибку с отображением Hashtable»

textual
Листинг программы
                        {
                            Hashtable inTemp = (Hashtable)tempH[Choise(tempH, choise, richTextBox)];
                            ShowList(tempH, richTextBox);
                            break;
                        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.167 из 5
Похожие ответы