@KAPJICOH

Как решить ошибки, появившиеся после написания программы по переводу слов?

Есть рабочий код, но появились ошибки при отладке. Да и по самой программе очень много проблем.

Не удается начать отладку так как отсутствует объект отладки.

Серьезность Код Описание Проект Файл Строка Столбец Состояние подавления
Ошибка CS0103 Имя "Properties" не существует в текущем контексте. WindowsFormsApplication4 c:\users\гулия\documents\visual studio 2015\Projects\WindowsFormsApplication4\WindowsFormsApplication4\Program.cs 20 29 Активно

Ошибка CS0103 Имя "File" не существует в текущем контексте. WindowsFormsApplication4 c:\users\гулия\documents\visual studio 2015\Projects\WindowsFormsApplication4\WindowsFormsApplication4\Program.cs 20 17 Активно

Ошибка CS0103 Имя "Form1" не существует в текущем контексте. WindowsFormsApplication4 c:\users\гулия\documents\visual studio 2015\Projects\WindowsFormsApplication4\WindowsFormsApplication4\Program.cs 1 15 Активно

Код:
spoiler
using Model;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Windows.Forms;
using System.Xml.Linq;

namespace AppTranslator
{
public partial class Form1 : Form
{
    //хранилище слов
    Dictionary store;
    
    public Form1()
    {
    InitializeComponent();
    //если файл существует 
    if (File.Exists(Properties.Settings.Default.Path))
    //извлекаем из него информацию
    store = XMLHelper.Load(Properties.Settings.Default.Path);
    else //иначе создаем новый объект
    store = new Dictionary();
}
    //переключение режимов
    private void англорусскийToolStripMenuItem_Click(object sender, EventArgs e)
    {
    Properties.Settings.Default.Mode = Mode.EngRus.ToString();
    русскоанглийскийToolStripMenuItem.Checked = false;
    англорусскийToolStripMenuItem.Checked = true;
}
    private void русскоанглийскийToolStripMenuItem_Click(object sender, EventArgs e)
    {
    Properties.Settings.Default.Mode = Mode.EngRus.ToString();
    англорусскийToolStripMenuItem.Checked = false;
    русскоанглийскийToolStripMenuItem.Checked = true;
}
    private void загрузкаБДToolStripMenuItem_Click(object sender, EventArgs e)
    {
    //диалог для открытия файла
    var fd = new OpenFileDialog();
    //ставим фильтр только на .xml файлы
    fd.Filter = "Xml files (.xml)|*.xml";
    //если какой-то из файлов был выбран
    if (fd.ShowDialog() == DialogResult.OK)
    {
    //загружаем информацию
    store = XMLHelper.Load(fd.FileName);
    //сохраняем путь
    Properties.Settings.Default.Path = fd.FileName;
}
}
    private void добавитьСловоToolStripMenuItem_Click(object sender, EventArgs e)
    {
    var form = new AddWord();
    //открываем диалоговую форму для добавления файла
    form.ShowDialog();
    
    foreach (var record in form.Records)
    {
    //если значение уже есть в словаре добавляем новые переводы
    //в соответствующий список
    if (store.ContainsKey(record.Word))
    foreach (var r in record.Values)
    store[record.Word].Values.Add(r);
    else
    //иначе добавляем новую запись
    store.Add(record.Word, record);
}
    //сохраняем новую информацию в файл
    XMLHelper.Save(store, Properties.Settings.Default.Path);
}
    private void button1_Click(object sender, EventArgs e)
    {
    //получаем слово для перевода
    var key = textBox1.Text.Trim().ToLower();
    //если слово есть в хранилище выводим все варианты перевода
    if (store.ContainsKey(key))
    textBox2.Text = string.Join(Environment.NewLine, store[key].Values);
    else
    {
    //проверяем что такое слово не встречается нигде в "вариантах" перевода
    var first = store.FirstOrDefault(pair => pair.Value.Values.Contains(key));
    if (first.Value != null) //если такое слово есть отображаем его
    textBox2.Text = first.Value.Word;
    else
    MessageBox.Show("Указанное слово отсутствует в словаре");
}
}
}
}
    
    namespace Model
    {
    //вспомогательный класс для работы с xml
    public static class XMLHelper
    {
    //метод, отвечающие за получение информации из файле
    public static Dictionary Load(string path)
    {
    var xd = XDocument.Load(path);
    return
    xd.Element("root") //получаем корень
    .Elements("word")//возвращаем все элементы с указанным названием
    .Select(word => new Record //преобразовываем XElement в тип записи
    (
    word: (string)word.Attribute("value"),
    values: word.Elements("translation").Select(x => (string)x),
        mode: (Mode)Enum.Parse(typeof(Mode), (string)word.Attribute("mode"))
      ))
      //создаем словарь для быстрой проверки нахождения слова
      .ToDictionary(x => x.Word, val => val);
    
}
//сохранение инфорации в файл
public static void Save(Dictionary dct, string path)
{
    var xd = new XElement("root");
    
    foreach (var val in dct.Values)
    {
        xd.Add(new XElement("word",
                            new XAttribute("mode", val.Mode),
                            new XAttribute("value", val.Word),
                            val.Values.Select(t => new XElement("translation", t)).ToArray()
                            ));
    }
    xd.Save(path);
}
}
}

namespace AppTranslator
{
public partial class AddWord : Form
{
    //список добавленных слов
    public List Records { get; set; }
    private Mode mode;
    public AddWord()
    {
    InitializeComponent();
    Enum.TryParse(Properties.Settings.Default.Mode, out mode);
    
    Records = new List();
    
    button1.Click += Button1_Click;
    button2.Click += Button2_Click;
}
    //обработчики событий
    private void Button2_Click(object sender, EventArgs e)
    {
    this.Close();
}
    private void Button1_Click(object sender, EventArgs e)
    {
    //преобразуем слово введенное пользователем к нижнем регистру, а также удаляем начальные и конечные пробельные символы
    var word = textBox1.Text.Trim().ToLower();
    var values =
    textBox2.Text //разбиваем строку из второго текстобокса по символу-разделителю
    .Split(new[] { "\n" }, StringSplitOptions.RemoveEmptyEntries)
    .Select(x => x.ToLower());//приводим к нижнему регистру
    //создаем запись
    var record = new Record(word, values, mode);
    //добавляем её в список
    Records.Add(record);
    //очищаем поля для ввода
    textBox1.Clear();
    textBox2.Clear();
}
}
}
    
    namespace Model
    {
    //перечисление с возможными режимами
    public enum Mode { RusEng, EngRus }
    //класс запись, отвечает за одну запись в файл
    public class Record
    {
    //слово
    public string Word { get; private set; }
    //множество значений для перевода
    public HashSet Values { get; private set; }
    public Record(string word, IEnumerable values, Mode mode)
    {
    Word = word;
    Values = new HashSet(values);
    Mode = mode;
}
}
}
    //режим
    public Mode Mode { get; private set; }}
  • Вопрос задан
  • 1156 просмотров
Пригласить эксперта
Ответы на вопрос 1
@kttotto
пофиг на чем писать
Он не может быть рабочим, если есть такие ошибки. По видимому не подключены библиотеки или не указаны ссылки на проект, или не указаны пространства имен.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы