Прежде всего, создайте объект зависимости столбца, чтобы вы могли избежать нескольких if.( Я знаю, что это необязательное выделение памяти, если вы хотите оптимизировать, вы можете использовать объект Dictionary<int, int>
, но я чувствую, что вы не хотите смешивать это с вашей проблемой.)
Если вы создаете массив размером 23, у вас может быть до 22 индексов (это самый высокий индексированный столбец из тех, которые можно дважды щелкнуть).
int[23] doubleClickConnections = new int[23];
Затем вы должны определить только те индексы, которые имеют двойное соединение.Так 2,6,10,14,18,22.Например:
doubleClickConnections[2] = 5;
(Похоже, что у ваших индексов есть шаблон. Ваши левые боковые индексы имеют вид 4n + 2
, а ваш правый боковой индекс всегда 4n + 5
. Этотакже можно использовать, но я оставляю это вам.)
После того, как вы это сделаете, вы должны использовать свойства DataGridViewCellEventArgs
class ', ColumnIndex и RowIndex.(Они возвращают индексы ячейки двойного щелчка.):
int columnToModify = doubleClickConnections[e.ColumnIndex]; //if e.ColumnIndex is 2, this sets the variable to 5 for example.
int valueToAssign = (new object[] {null, 1}).Contains(
dataGridViewAcorn.Rows[e.RowIndex].Cells[e.ColumnIndex].Value
) ? 0 : 1;
dataGridViewAcorn.Rows[e.RowIndex].Cells[columnToModify].Value = valueToAssign;
Это предполагает, что логика для ввода 0 или 1 в ячейку для изменения всегда одинакова (еслиячейка, по которой щелкают 0, помещает 1, если 1 - 0).
Если вы хотите выполнить первую часть с Dictionary<int, int>
объектом:
Dictionary<int, int> doubleClickConnections = new Dictionary<int, int>(6) {
{ 2, 5 },
{ 6, 9 },
...
};
Затем вы ссылаетесь на словарь так же, как и на массив, например:
doubleClickConnections[2] //which equals 5