C# 如何实现用户控件';用户控制之外的方法?
假设我有一个用户控件(SubmitButton),它有一个submit按钮,当用户单击该按钮时,我希望包含SubmitButton实例的控件决定submit按钮的行为 我在user control.cs文件中尝试了以下操作:C# 如何实现用户控件';用户控制之外的方法?,c#,asp.net,webusercontrol,C#,Asp.net,Webusercontrol,假设我有一个用户控件(SubmitButton),它有一个submit按钮,当用户单击该按钮时,我希望包含SubmitButton实例的控件决定submit按钮的行为 我在user control.cs文件中尝试了以下操作: protected void nextPage_Click(object sender, EventArgs e) { submitData(); Response.Redirect("completed.aspx");
protected void nextPage_Click(object sender, EventArgs e) {
submitData();
Response.Redirect("completed.aspx");
}
protected abstract void submitData();
但是我不知道submitData方法应该在哪里实现
这就像是方法的占位符。这将是一个。您永远不能创建这些的实例,您必须创建自己的类,从中继承并实现抽象方法和属性。
例如:
尝试函数委托之类的操作:
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");
}
}
}
您的控件应该公开事件。例如SubmitClicked。而不是在包含它的控件中,您订阅该事件并执行您选择的任何操作。如果您已经公开了事件,您可以将任意多个事件处理程序附加到它
这就是asp:按钮所做的。它公开单击事件,在aspx页面中,您只需订阅该事件并在代码隐藏文件中实现事件处理程序。这是错误的,因为每次单击后需要不同的效果时,它都需要新类。asp.net中的按钮已经单击了事件,那么为什么要创建一些奇怪的解决方案呢?
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");
}
}
}