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;
это не ООР. У тебя все в статике, всё нужно переписать и тогда твой проект станет в два раза меньше, гораздо понятнее и масштабируемым.