Показать сообщение отдельно
  #88  
Старый 11.09.2022, 01:18
Аватар для Ghost
Ghost Ghost вне форума
Старший сержант
 
Регистрация: 03.08.2006
Адрес: Рубцовск
Сообщений: 158
Спасибо: 17
Ghost стоит на развилке
По умолчанию

System.ObjectDisposedException: Cannot access a disposed object.
System.IO.DirectoryNotFoundException: Could not find a part of the path...

Код:
           try
            {
                ListViewHitTestInfo stroka_v_tablice = listView_Tablica_Vivoda_Bazi.HitTest(e.X, e.Y);

                if (stroka_v_tablice != null)
                {
                    nomer_najatoi_stroki = stroka_v_tablice.Item.Index;

                    nomer_najatoi_stroki++;
                }
            }
            catch (Exception)
            {
                //  где обработка исключений?
            }
Код:
                        if (Directory.Exists("БД") == false) // зачем тут лишняя проверка?
                        {
                            Directory.CreateDirectory("БД");
                        }
Зачем в конструкторе главного окна создавать диалоги и читать какие то файлы?
Что это за файлы? Что если в них миллион строк? Я главное окно через полчаса увижу? Завтра вместо файлов нужна будет база данных будешь всё приложение переписывать? Слишком много логики в одном классе, инкапсулируй её. Где тесты?

---------- Добавлено 11.09.2022 в 03:09 ----------

Код:
                foreach (string stroka in Poisk.stroka)
                {
                    if (stroka != "")
                    {
                        chislo_parametrov_dlia_sravnenia++;
                    }
                }
Что это за цикл? Ты считаешь длину массива без пустых строк? Не ложи их туда, сделай массив динамическим. Poisk.stroka.Length? И почему там статика?
Код:
            string[] stolbci = new string[]
            {
                listView_Tablica_Vivoda_Bazi.Columns[0].Text,         // ID
                listView_Tablica_Vivoda_Bazi.Columns[1].Text,         // Дата приобретения
                listView_Tablica_Vivoda_Bazi.Columns[2].Text,         // Инв. №
                listView_Tablica_Vivoda_Bazi.Columns[3].Text,         // Помещение
                listView_Tablica_Vivoda_Bazi.Columns[4].Text,         // Закреплено за ФИО
                listView_Tablica_Vivoda_Bazi.Columns[5].Text,         // Наименование
                listView_Tablica_Vivoda_Bazi.Columns[6].Text,         // Тип
                listView_Tablica_Vivoda_Bazi.Columns[7].Text,         // Состояние
                listView_Tablica_Vivoda_Bazi.Columns[8].Text,         // Инвентаризация
                listView_Tablica_Vivoda_Bazi.Columns[9].Text,         // Комментарий
                listView_Tablica_Vivoda_Bazi.Columns[10].Text,        // Hostname
                listView_Tablica_Vivoda_Bazi.Columns[11].Text,        // IP
                listView_Tablica_Vivoda_Bazi.Columns[12].Text,        // Изменил ФИО
            };
Хорошо что их не сто, правда?
Код:
        private void ToolStripMenuItem_Sohranit_Kak_Click(object sender, EventArgs e)
        {
            SaveFileDialog put_k_failu = new SaveFileDialog() { Filter = "*.CSV|*.csv" };

            if (put_k_failu.ShowDialog() == DialogResult.OK)
            {
                File.WriteAllLines(put_k_failu.FileName, spisok_stolbcov.Select(x => string.Join(",", x)));

                File.AppendAllLines(put_k_failu.FileName, baza.Select(x => string.Join(",", x)));

                put_do_BD = put_k_failu.FileName;
            }
        }
        private void ToolStripMenuItem_Sohranit_Click(object sender, EventArgs e)
        {
            try
            {
                File.WriteAllLines(put_do_BD, spisok_stolbcov.Select(x => string.Join(",", x)));

                File.AppendAllLines(put_do_BD, baza.Select(x => string.Join(",", x)));
            }
            catch (Exception)
            {
              ???????????????
            }
        }
Дублирование кода детект.
Сделай нормальный рефакторинг. Придерживайся одного codestyle. Ну и название методов, свойств, полей и переменных пиши на английском.

---------- Добавлено 11.09.2022 в 03:30 ----------

Код:
        public static string put_do_BD = "";                          // Путь к файлу с базой
        public static string put_do_spiska_pomeschenii = "";          // Путь к списку помещений
        public static string put_do_spiska_sotrudnikov = "";          // Путь к списку сотрудников
        public static string put_do_spiska_tipov_oborudovania = "";   // Путь к списку типов оборудования
        
        public static List<string[]> baza = new List<string[]>();     // БД в виде списка для удобной работы

        public static int index = 0;                                  // Индекс элемента в БД. При добавлении +, при удалении -

        public static bool kopirovanie;                               // Флаг копирования при операции "Копирование"
        public static bool peremeschenie;                             // Флаг перемещения при операции "Перемещение"

        public static int nomer_najatoi_stroki;                       // При клике мышкой запоминает номер строки в таблице на главном окне
        public static bool izmeneniia_s_otkritiia = false;            // Отслеживает были ли изменения с открытия программы.
        public static string[] pomescheniia;

        public static string[] sotrudniki;

        public static string[] tipi;

        public static string[] stroka = new string[13];

        public static bool otmenit = true;
        public static string[] pomescheniia;

        public static string[] sotrudniki;

        public static string[] tipi;
        public static string[] pomescheniia;

        public static string[] sotrudniki;

        public static string[] tipi;

        public static string[] stroka = new string[13];

        public static bool otmenit = true;
это не ООР. У тебя все в статике, всё нужно переписать и тогда твой проект станет в два раза меньше, гораздо понятнее и масштабируемым.
__________________
Ответить с цитированием