ASP.NET从不同的类调用按钮动作
本文关键字:调用 按钮 NET ASP | 更新日期: 2023-09-27 18:15:48
我有一个类Lot函数AddPiece(piece)。
我也有一个页面与按钮btnPanel,点击触发函数
public void btnPanel_OnClick(object sender, EventArgs e){}
我想从Addpiece函数调用btnPanel_OnClick,但当我尝试这样做时,它不会显示在intellisense中,我得到这个编译错误"名称'btnPanel_OnClick'不存在于当前上下文中"。两个类都在同一个命名空间中。这可能吗?
我有:
namespace GraphicW_Array
{
public partial class Board : System.Web.UI.Page
{
public void btnPanel_OnClick(object sender, EventArgs e)
{
...code...
}
}
}
和
namespace GraphicW_Array
{
public class Lot
{
public void addPiece(int piece)
{
lotPresent[lotLoad] = piece;
lotLoad++;
}
}
}
我认为答案是可以,但你可能不想。要调用所需的方法和页面类的实例,您可以执行
namespace GraphicW_Array
{
public class Lot
{
public void addPiece(int piece)
{
lotPresent[lotLoad] = piece;
lotLoad++;
var myPage = new Board();
myPage.btnPanel_OnClick(null,EventArgs.Empty);
}
}
}
但这到底有什么用呢?我不知道,因为你还没有发布代码,但我怀疑它不会为你做任何有用的。
你到底想达到什么目标?
也许这是你想要的
namespace GraphicW_Array
{
public class Lot
{
public void addPiece(int piece, Board myPAge)
{
lotPresent[lotLoad] = piece;
lotLoad++;
myPage.btnPanel_OnClick(null,EventArgs.Empty);
}
}
}
然后在你的页面中你可以这样称呼它:
var myLot = new Lot();
myLot.addPiece(4,this);
这是可能的。
确保您的Lot
类有对Board
类的引用,以便能够调用它,或者在其上定义一个Board
类可以订阅的事件,并在事件触发时调用此方法。
如果您不使用sender
和e
参数,只需传递一个null
和EventArgs.Empty
。
你可以通过传递null(如果sender和EventArgs不是强制性的)来调用page的事件,但下面是更好的方法。
从类中调用事件是不明智的,也不是好的做法,但是您可以在类中创建另一个带参数的方法,然后在需要时使用所需的参数调用它。可以按如下方式完成:
假设你有下面的事件
public void btnPanel_OnClick(object sender, EventArgs e)
{
//Do some common tasks to do here
}
重新排列如下:
public void btnPanel_OnClick(object sender, EventArgs e)
{
Lot lot = new Lot();
lot.CommonFunction(arg1, arg2); // Pass required data
}
public class Lot
{
public void AFunction()
{
//Do something
//...
CommonFunction(arg1, arg2); // Pass required data
//...
//Do something
}
public void CommonFunction(string arg1, string arg2)
{
// Do some common tasks to do here
}
}