Почему бы просто не использовать один метод и сопоставить его с двумя событиями?
private void dgv_CellEvent(object sender, DataGridViewCellEventArgs e)
{
string abc = "123";
}
// In the event mapping
dgv.CellEnter += dgv_CellEvent;
dgv.CellClick += dgv_CellEvent;
В окне свойств (используя C # Express) вы можете выбрать обработчики событий в раскрывающемся списке или вручную ввести имя метода. Подпись просто должна совпадать. Я предполагаю, что то же самое и в VS.
Самый простой способ - это сделать:
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, чтобы указать, что этот метод обрабатывает оба события.
Ну, быстрый ответ - да. Поместите внутренности методов в собственный метод, а затем просто вызовите этот метод событием 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();
}
Просто вызовите тот же метод из разметки. На самом деле вам нужен только один из этих методов, и событие в разметке может вызывать тот же самый.
Вы можете попробовать следующее:
private void dgv_CellEnter(object sender, DataGridViewCellEventArgs e)
{
string abc = "abc";
}
private void dgv_CellClick(object sender, DataGridViewCellEventArgs e)
{
dgv_CellEnter(sender, e);
}
Таким образом, когда вы щелкните или нажмите Enter, будет запущен тот же метод.
Спасибо