У меня есть кнопка в моем 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)