来自不同类的ASP.NET调用按钮操作

时间:2011-11-27 18:17:55

标签: c# asp.net class

我有一个带有AddPiece(piece)功能的Lot。

我还有一个带有按钮btnPanel的页面,点击该按钮会激活该功能

public void btnPanel_OnClick(object sender, EventArgs e){}

我想从Addpiece函数调用btnPanel_OnClick,但是当我尝试这样做时,它没有显示在intlliSense中,我得到了这个编译错误“当前上下文中不存在名称'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++;
    }
  }
}

3 个答案:

答案 0 :(得分:2)

是的,这是可能的。

确保您的Lot类具有对Board类的引用,以便能够调用它,或者在其上定义Board类可以订阅的事件,并且事件发生时会调用此方法。

如果您不使用sendere参数,只需传递nullEventArgs.Empty

答案 1 :(得分:2)

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

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);

答案 2 :(得分:1)

您可以通过传递null来调用page的事件(如果sender和EventArgs不是必需的),但下面是更好的方法。

从类中调用事件并不是明智而不是好的做法,但是您可以在类中使用参数创建另一个方法,然后在需要时使用所需的参数调用它。

这可以通过以下方式完成:

假设你有下面的事件

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