0

假设我有一个用户控件(SubmitButton),它有一个提交按钮,当用户单击该按钮时,我希望包含一个 SubmitButton 实例的控件决定提交按钮的行为。

我在用户控件 .cs 文件中尝试了以下操作:

    protected void nextPage_Click(object sender, EventArgs e) {

        submitData();

        Response.Redirect("completed.aspx");
    }

    protected abstract void submitData();

但是我不知道 submitData 方法应该在哪里实现。

它就像方法的占位符。

4

3 回答 3

1

您的控件应该公开事件。例如提交点击。比包含它的控制权您订阅该事件并执行您选择执行的任何操作。如果您有事件暴露,您可以根据需要附加任意数量的事件处理程序。

这就是 asp:Button 已经做的。它公开了 Click 事件,并且在 aspx 页面中您只需订阅该事件并在您的代码隐藏文件中实现事件处理程序。

于 2011-07-03T19:03:09.400 回答
0

这将是一个抽象类。您永远不能创建这些实例,您必须创建自己的类,从它继承并实现抽象方法和属性。例如:

public class MySubmitButton : SubmitButton {
  protected override void submitData() {
    // do somthing
  }
}
于 2011-07-03T18:55:21.797 回答
0

尝试类似函数委托的东西:

using System;

namespace ConsoleApplication1
{
    public delegate void FunctionToBeCalled();

    public class A
    {
        public FunctionToBeCalled Function;

        public void Test()
        {
            Function();
            Console.WriteLine("test 2");
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            A instanceA = new A();
            instanceA.Function = TheFunction;
            instanceA.Test();
        }

        static void TheFunction()
        {
            Console.WriteLine("test 1");
        }
    }       

}
于 2011-07-03T19:02:39.203 回答