C# комбинируют 2 события в одном методе

new ArrayList<>(Arrays.asList(array))
5
задан Darko Z 7 August 2009 в 01:16
поделиться

5 ответов

Почему бы просто не использовать один метод и сопоставить его с двумя событиями?

private void dgv_CellEvent(object sender, DataGridViewCellEventArgs e)
{
    string abc = "123";
}

// In the event mapping

dgv.CellEnter += dgv_CellEvent;
dgv.CellClick += dgv_CellEvent;
7
ответ дан 18 December 2019 в 09:52
поделиться

В окне свойств (используя C # Express) вы можете выбрать обработчики событий в раскрывающемся списке или вручную ввести имя метода. Подпись просто должна совпадать. Я предполагаю, что то же самое и в VS.

2
ответ дан 18 December 2019 в 09:52
поделиться

Самый простой способ - это сделать:

private void dgv_CellEnter(object sender, DataGridViewCellEventArgs e)
{ 
    dgv_CellClick(sender, e); 
}

private void dgv_CellClick(object sender, DataGridViewCellEventArgs e)
{ 
    string abc = "abc"; 
}

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

В ASP.NET или WPF ваша сетка данных или что-то подобное имеет свойство, которое определяет имя обработчика событий, так что вы можете просто указать им обоим на это.

] Если бы вы программировали на VB.NET вместо C #, вы могли бы просто написать один метод и использовать ключевое слово Handles, чтобы указать, что этот метод обрабатывает оба события.

1
ответ дан 18 December 2019 в 09:52
поделиться

Ну, быстрый ответ - да. Поместите внутренности методов в собственный метод, а затем просто вызовите этот метод событием onclick. Это даст вам только одно место для обновления кода, если он должен измениться.

Есть 100 различных способов сделать это, и это, вероятно, самый простой.

Итак, создайте что-то вроде этого:

protected void MyNewMethod()
{
    string abc = "123";
}

, а затем ваши другие методы будут просто вызывать это так:

private void dgv_CellEnter(object sender, DataGridViewCellEventArgs e)
{ 
    MyNewMethod(); 
}

private void dgv_CellClick(object sender, DataGridViewCellEventArgs e)
{ 
    MyNewMethod(); 
}

Вариант 2

Просто вызовите тот же метод из разметки. На самом деле вам нужен только один из этих методов, и событие в разметке может вызывать тот же самый.

6
ответ дан 18 December 2019 в 09:52
поделиться

Вы можете попробовать следующее:

private void dgv_CellEnter(object sender, DataGridViewCellEventArgs e)
{
    string abc = "abc";
}

private void dgv_CellClick(object sender, DataGridViewCellEventArgs e)
{
    dgv_CellEnter(sender, e);
}

Таким образом, когда вы щелкните или нажмите Enter, будет запущен тот же метод.

Спасибо

1
ответ дан 18 December 2019 в 09:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: