2011-07-03 33 views
0

說我有一個用戶控件(SubmitButton)有一個提交按鈕,當用戶點擊時,我想包含一個SubmitButton實例的控件決定提交按鈕的行爲。如何在用戶控制之外實現用戶控件的方法?

我曾嘗試在用戶控件.cs文件如下:

protected void nextPage_Click(object sender, EventArgs e) { 

     submitData(); 

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

    protected abstract void submitData(); 

但我不知道在哪裏submitData方法應予執行。

這就像一個方法的佔位符。

回答

1

你控制應公開事件。例如SubmitClicked。比包含它的控件你訂閱那個事件並做任何你選擇做的事情。如果您有暴露事件您可以根據需要添加儘可能多的事件處理程序。

這就是asp:Button已經做的事情。它暴露了Click事件並在aspx頁面中您只需訂閱該事件並在您的代碼隱藏文件中實現事件處理程序。

+0

您的解決方案非常優雅。 – draw

0

這將是一個abstract class。你永遠不能創建這些實例,你必須創建自己的類並繼承它並實現抽象方法和屬性。 如:

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

這是不好的,因爲它每次都需要新類您點擊後需要不同的效果。 asp.net中的按鈕已經有Clicked事件,那麼爲什麼要創建一些奇怪的解決方案? –

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

} 
相關問題