2011-02-10 81 views
1

enter image description here在父級上執行UserControl事件

我正在將Delphi 7.0應用程序轉換爲.Net(2.0)。

在Delphi應用程序中有類似的實現,如「用戶控制」,所以我也在我的C#應用​​程序中做了同樣的事情。

但是在Delphi中,可以在主(父)上編寫UserControl的事件實現,在.Net中不太可能在UserControl級別執行該操作是必須的(不確定)。

我的問題是,

  1. 我們不能做在.net中一樣嗎?這樣做

  • Altenative方法(直接)方法:我achived什麼,我想通過代表/事件,但我喜歡的方式在Delphi

  • +0

    你能展示一些Delphi代碼嗎?我用Delphi編程已經有一段時間了,但我不記得你不能做你正在說的話。事件的實施屬於班級而不屬於其他班級。所以,如果你向我們展示一些Delphi代碼,並解釋你想要做什麼,那麼將更容易向你展示如何在.NET中執行它。 – 2011-02-10 06:13:11

    +0

    我想知道我是如何顯示代碼的... Buecase與代碼無關,它是關於編碼的方式.... 只是它... 如何實現一個事件(fucntion)控制usercontorl,它駐留的窗體(父)? – 2011-02-10 06:17:49

    回答

    1

    完成它,你可以對夫婦的替代方法實現這一點:

    1. 使控制構件(由設計者生成)用戶控件內的公共或內部(可以通過設置修飾語的控制屬性屬性)。然後,您可以編寫代碼,如UserCtr1.UserCtr2.UserCtrl3.Btn1以引用該按鈕,並在表單代碼中附加事件處理程序。我不會喜歡這種方法,因爲它打破了封裝。但是如果你認爲用戶控件只是一個UI模板(沒有任何行爲),那麼它可能適合你。
    2. 另一種方法是在控制代碼中包含本地事件處理程序,但使它們從Form調用相應的方法。這可以通過使用TopLevelControl屬性來完成。例如,在用戶按Ctrl 3代碼

      私人無效Btn1_Click(對象發件人,EventArgs的) { ((FormMain)this.TopLevelControl).Search(參數1); }

    問題的這種方法是具有形式和方法來解決。將注入一些接口,用於從用戶控制功能調用緊密耦合。表單可以實現該接口。 (接口)實例可以通過某種IoC容器/ DI框架注入到所有用戶控件中。

    相關問題