如何实现用户控件';用户控制之外的方法

本文关键字:用户 控制 方法 控件 何实现 实现 | 更新日期: 2023-09-27 18:00:55

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

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

    protected void nextPage_Click(object sender, EventArgs e) {
        submitData();
        Response.Redirect("completed.aspx");
    }
    protected abstract void submitData();

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

这就像是方法的占位符。

如何实现用户控件';用户控制之外的方法

您的控件应该公开事件。例如SubmitClickd。然后在包含它的控件中订阅该事件并执行您选择执行的任何操作。如果您已公开事件,则可以根据需要附加任意多的事件处理程序。

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

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

public class MySubmitButton : SubmitButton {
  protected override void submitData() {
    // do somthing
  }
}

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

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