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++;
    }
  }
}

ASP.NET从不同的类调用按钮动作

我认为答案是可以,但你可能不想。要调用所需的方法和页面类的实例,您可以执行

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类可以订阅的事件,并在事件触发时调用此方法。

如果您不使用sendere参数,只需传递一个nullEventArgs.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
    }
}