2016-12-08 3 views
0

Я пытаюсь вызвать OnCellEditEnding событие от другого события,Как вызвать обработчик события Control? Получить EventArgs значение C#

private void BillsTableRecords_OnCellEditEnding(object sender, DataGridCellEditEndingEventArgs e) 
{ 
    // do stuff here 
} 

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

private void BillsRecordsCheckBox_OnChecked(object sender, RoutedEventArgs e) 
{ 
    BillsTableRecords_OnCellEditEnding(sender, e); 
} 

Итак, как получить значение от DataGridCellEditEndingEventArgs, так что я могу передать значение в методе? Обратите внимание, что ячейку DataGrid можно выбрать в этой точке, чтобы она содержала значение.

+1

сделать оба события вызова метода со списком необходимых аргументов, которые существуют независимо друг от друга из EventArgs или передать 'new DataGridCellEditEndingEventArg()' с соответствующими наборами членов или передать null. –

+0

@AlexK. Я сделал это, но мне все еще нужно значение DataGridCellEditEndingEventArgs в методе. – KyloRen

+0

Это неправильный способ вызова события из другого события. вам, вероятно, нужно связать ваш флажок с DataGrid каким-то образом –

ответ

1

Я бы не рекомендовал этот подход. События должны вызываться обработчиками событий; их подпись не подходит для отдельного вызова. Если вы выполняете бизнес-код в обработчике событий, это также не очень хорошо, потому что ваши обработчики событий - это код пользовательского интерфейса, который должен быть отделен от бизнес-кода.

Лучший способ пойти сюда, чтобы создать специальный метод, который делает то, что вы хотите, и вызывать его из обоих обработчиков событий:

private void DoStuff(/* add the parameters you need*/) { 
    //do stuff 
} 

private void BillsTableRecords_OnCellEditEnding(object sender, DataGridCellEditEndingEventArgs e) 
{ 
    DoStuff(); 
} 

private void BillsRecordsCheckBox_OnChecked(object sender, RoutedEventArgs e) 
{ 
    DoStuff(); 
} 
+0

Как получить значение DataGridCellEditEndingEventArgs при вызове метода do do из обработчика On_Checked? – KyloRen

+0

Вы не должны использовать 'DataGridCellEditEndingEventArgs' для вызова метода. Вы передаете значения из аргументов событий в качестве параметров в свой метод. Таким образом, вы остаетесь независимыми от своих событий. – Sefe

+0

, если вам нужно «DataGridCellEditEndingEventArgs», вам необходимо запустить соответствующее соответствующее событие. @KyloRen –

1

попробовать что

private void BillsRecordsCheckBox_OnChecked(object sender, RoutedEventArgs e) 
{ 
    BillsTableRecords_OnCellEditEnding(sender, new DataGridCellEditEndingEventArg()); 
} 

Если вы хотите сохранить аргументы из RoutedEventArgs, добавьте их в конструктор DataGridCellEditEndingEventArg

Смежные вопросы