У меня есть кнопка в моем aspx файле btnTest. Файл .cs имеет функцию, которая вызывается при нажатии кнопки.
btnTest_Click(object sender, EventArgs e)
Как я могу вызвать эту функцию из моего кода (т.е. без нажатия кнопки)?
У меня есть кнопка в моем aspx файле btnTest. Файл .cs имеет функцию, которая вызывается при нажатии кнопки.
btnTest_Click(object sender, EventArgs e)
Как я могу вызвать эту функцию из моего кода (т.е. без нажатия кнопки)?
btnTest_Click(null, null);
При условии, что метод не использует ни один из этих параметров (он очень распространен не для.)
Честно говоря, хотя это нехорошо. Если у вас есть код, который нужно вызвать, вы должны следовать следующему соглашению:
protected void btnTest_Click(object sender, EventArgs e)
{
SomeSub();
}
protected void SomeOtherFunctionThatNeedsToCallTheCode()
{
SomeSub();
}
protected void SomeSub()
{
// ...
}
Использование
btnTest_Click( this, new EventArgs() );
Все вышеописанные методы не подходят, потому что вы можете изменить имя функции события. Самый простой способ:
btnTest.PerfromClick();
Вы можете использовать отражение для вызова метода OnClick
, который активирует обработчики событий щелчка.
Я чувствую грязную публикацию этого, но он работает...
MethodInfo clickMethodInfo = typeof(Button).GetMethod("OnClick", BindingFlags.NonPublic | BindingFlags.Instance);
clickMethodInfo.Invoke(buttonToInvoke, new object[] { EventArgs.Empty });
Если метод не использует либо sender
, либо e
, вы можете вызвать:
btnTest_Click(null, null);
То, что вы, вероятно, должны рассмотреть, - это извлечение кода из этого метода в его собственный метод, который вы могли бы вызвать как из обработчика события нажатия кнопки, так и из любых других мест в коде, требующих функциональные возможности.
Это просто метод в вашей форме, вы можете назвать его так же, как любой другой метод. Вам просто нужно создать объект EventArgs для передачи ему (и передать ему дескриптор кнопки как sender
)
Просто позвоните
btnTest_Click (null, null);
Просто убедитесь, что вы не пытаетесь использовать любой из этих параметров в функции.
Внутри первой кнопки события вызова вторая кнопка (изображение):
imagebutton_Click((ImageButton)this.divXXX.FindControl("imagbutton"), EventArgs.Empty);
вы можете использовать состояние кнопки, например, команду commandArgument, если вы что-то в ней сохраняете.
btnTest_Click (новый объект(), EventArgs.Empty)
Вы можете вызвать btnTest_Click, как и любую другую функцию.
Самая простая форма:
btnTest_Click(this, null);
btnTest.Click +=new EventHandler(btnTest_Click)