簡體   English   中英

在派生表格之間共享代碼

[英]Sharing code between derived forms

我在我的一個項目中實現了視覺繼承。 有兩種從基本形式衍生出來的形式。 我也有一個基類派生的兩個常規派生類。 每個派生形式都處理一個派生類之一,該派生類實例化適當類的對象。 例如,存在一個稱為“字母”的基本形式以及兩個派生形式“ A”和“ B”,而存在一個基類“ base”以及兩個派生類“ a”和“ b”。 當我“調用”“ A”時,將實例化“ a”中的對象,並且“ b”和“ B”的規則相同。

我在表單“ A”上執行的操作是使用多個文本框填充類“ a”中對象的屬性,對於表單“ B”,則填充類“ b”中對象的屬性。

我當時希望做的是從程序的某個點“調用”每種形式(“ A”或“ B”)(在這種情況下,是另一種形式),並在我用實例化的對象上工作。正確形式的事件。

關鍵是我的代碼形式“ A”和“ B”中的事件在95%的時間內都是相同的。 我最初以為我可以將所有內容放到基本表單(“字母”)上,並在那里使用派生對象,但是我不能。 發生這種情況的主要原因是,我無法將派生表單中實例化的對象與基本表單中的事件一起使用。 例如,盡管我可以使用我在“ A”類上創建的對象,而我在“ A”類中創建的一個對象卻帶有“字母”上的事件,但我不能使用該對象字母”和“ A”上的事件。 經過一番思考,我明白了為什么會這樣。

我的解決方案是將所有事件代碼放在形式“ A”和“ B”上,並且效果很好。

關鍵是我的“ A”和“ B”表格中的事件在95%的時間內仍然相似。 我認為我正在做一些非常混亂且不必要的事情。 因此,我的問題是:如何優化工作,使事件只能編寫一次? 大聲笑,長文章和短問題。 感謝您的幫助。

謝謝,

里卡多(Ricardo S.)

字母可以有一個base實例。 在A中將具有將base實例轉換為a的屬性。

Class letter
    Inherits Forms

    protected _base As base
End Class

Class A
    Inherits letter

    Public ReadOnly Property objA As a
        Get
            Return CType(_base, a)
        End Get
    End Property

    Public Sub New()
        _base = new a
    End Sub
End Class

另一種選擇是創建一個用戶控件,該控件包含將基數作為參數的相似功能。 然后,您只需要將相同的用戶控件放入兩種形式即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM