Подтвердить что ты не робот

С#: вызов метода обработчика событий кнопки без нажатия кнопки

У меня есть кнопка в моем aspx файле btnTest. Файл .cs имеет функцию, которая вызывается при нажатии кнопки.

btnTest_Click(object sender, EventArgs e)

Как я могу вызвать эту функцию из моего кода (т.е. без нажатия кнопки)?

4b9b3361

Ответ 1

btnTest_Click(null, null);

При условии, что метод не использует ни один из этих параметров (он очень распространен не для.)

Честно говоря, хотя это нехорошо. Если у вас есть код, который нужно вызвать, вы должны следовать следующему соглашению:

protected void btnTest_Click(object sender, EventArgs e)
{
   SomeSub();
}

protected void SomeOtherFunctionThatNeedsToCallTheCode()
{
   SomeSub();
}

protected void SomeSub()
{
   // ...
}

Ответ 2

Использование

btnTest_Click( this, new EventArgs() );

Ответ 3

Все вышеописанные методы не подходят, потому что вы можете изменить имя функции события. Самый простой способ:

btnTest.PerfromClick();

Ответ 4

Вы можете использовать отражение для вызова метода OnClick, который активирует обработчики событий щелчка.

Я чувствую грязную публикацию этого, но он работает...

MethodInfo clickMethodInfo = typeof(Button).GetMethod("OnClick", BindingFlags.NonPublic | BindingFlags.Instance);

clickMethodInfo.Invoke(buttonToInvoke, new object[] { EventArgs.Empty });

Ответ 5

Если метод не использует либо sender, либо e, вы можете вызвать:

btnTest_Click(null, null);

То, что вы, вероятно, должны рассмотреть, - это извлечение кода из этого метода в его собственный метод, который вы могли бы вызвать как из обработчика события нажатия кнопки, так и из любых других мест в коде, требующих функциональные возможности.

Ответ 6

Это просто метод в вашей форме, вы можете назвать его так же, как любой другой метод. Вам просто нужно создать объект EventArgs для передачи ему (и передать ему дескриптор кнопки как sender)

Ответ 7

Просто позвоните

btnTest_Click (null, null);

Просто убедитесь, что вы не пытаетесь использовать любой из этих параметров в функции.

Ответ 8

Внутри первой кнопки события вызова вторая кнопка (изображение):

imagebutton_Click((ImageButton)this.divXXX.FindControl("imagbutton"), EventArgs.Empty);

вы можете использовать состояние кнопки, например, команду commandArgument, если вы что-то в ней сохраняете.

Ответ 9

btnTest_Click (новый объект(), EventArgs.Empty)

Ответ 10

Вы можете вызвать btnTest_Click, как и любую другую функцию.

Самая простая форма:

btnTest_Click(this, null);

Ответ 11

btnTest.Click +=new EventHandler(btnTest_Click)