В настоящее время я делаю приложение формы окна списка дел как проект. У меня есть программа без работы, но одна вещь, которая в настоящее время не работает, - это функция удаления.Удаление элемента из нескольких массивов
В основном, как моя программа работает в настоящее время, так это то, что я использую любое название задачи, которое они выбирают внутри поля списка, связанные с ним данные (то есть приоритет, дата начала, дата окончания) все находятся с использованием той же позиции индекса , Эта позиция индекса найдена с помощью линейного поиска в массиве заголовков задач, используя заголовок, который пользователь выбирает в списке в качестве ключа.
Я очищаю содержимое этого элемента массива, возвращая его к исходному значению по умолчанию, которое присутствовало в этом элементе перед добавлением данных, например, я сбросил содержимое элемента в массиве заголовка задачи, установив содержимое «null».
Затем я обновить содержимое окна списка, используя следующие:
taskListBox.DataSource = null;
taskListBox.DataSource = DataArrays.titleArr;
Однако полный код этого метода ниже.
public void deleteSelectedTask(ref ListBox taskListBox)
{
MainForm main = new MainForm();
DataInput input = new DataInput();
string key = Convert.ToString(taskListBox.SelectedValue);
int i = getTaskKey(key);
DataArrays.titleArr[i] = null;
DataArrays.descArr[i] = null;
DataArrays.priorityArr[i] = 0;
DataArrays.startDateArr[i] = Convert.ToDateTime("01/01/0001");
DataArrays.endDateArr[i] = Convert.ToDateTime("01/01/0001");
DataArrays.completeArr[i] = null;
taskListBox.DataSource = null;
taskListBox.DataSource = DataArrays.titleArr;
}
В настоящее время этот метод добрейшей работ и технически удаляет этот элемент, однако по каким-то причинам это влияет на источник данных для массива и не всегда успешно обновить.
Например, скажем, у вас было 3 задачи, введенные в массив. Вы удаляете задачу, которая находилась в позиции элемента 3, этот метод работает отлично! Задача успешно удаляется из массива и не отображается после обновления списка.
ОДНАКО, если пользователь решает удалить задачу, являющуюся предшественником другой задачи, то есть задачи 1 или 2, окно списка решает не отображать ни одну из последовательных задач ДАЖЕ ЕСЛИ они не были выбраны удален. Например, если вы удалите задачу 1 из списка, задачи 2 и 3 также исчезнут. ИЛИ если вы удалите задачу 2 из списка, задача 3 также исчезнет, но задача 1 останется.
Я не уверен, в чем проблема, я чувствовал, что свежие глаза на этот код могут помочь в этой ситуации.
EDIT:
DataArrays буквально используется для хранения моих массивов:
public class DataArrays
{
public static string[] titleArr = new string[9];
public static string[] descArr = new string[9];
public static int[] priorityArr = new int[9];
public static DateTime[] startDateArr = new DateTime[9];
public static DateTime[] endDateArr = new DateTime[9];
public static string[] completeArr = new string[9];
}
Это должно быть полностью не связанный с вашей проблемой, но вам не нужны эти две строки в функции, я думаю: 'MainForm main = new MainForm(); DataInput input = new DataInput(); ' – DWright
Он * может * помочь увидеть код для' DataArrays' – DWright
Я подозреваю, что на самом деле хотите сделать, это не обнулить элементы массива, а удалить их прямо. В этом случае рассмотрите использование списков вместо массивов, потому что список позволяет удалять элементы из списка. См. [List.RemoveAt()] (https://msdn.microsoft.com/en-us/library/5cw9x18z%28v=vs.110%29.aspx) – DWright