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

    @KAPJICOH Автор вопроса
    Петр,

    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
    {
    {
    //вспомогательный класс для работы с xml
    public static class XMLHelper
    {
    //перечисление с возможными режимами
    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; } }
  • Как решить ошибки, появившиеся после написания программы по переводу слов?

    @KAPJICOH Автор вопроса
    Петр,
    Пространство имен "Model" уже содержит определение для "XMLHelper". WindowsFormsApplication4
  • Как решить ошибки, появившиеся после написания программы по переводу слов?

    @KAPJICOH Автор вопроса
    Петр, 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; }
  • Как решить ошибки, появившиеся после написания программы по переводу слов?

    @KAPJICOH Автор вопроса
    появилась новая ошибка

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