一個例子的子面板的正確或優選的方法:什麼是繪製用戶形式
使用VS我可以創建MyControl從用戶控件派生,此可添加一組數據作爲成員或屬性。 使用視覺設計師我可以爲MyControl添加兩個面板 - 每個面板都使用我打算提供的方法呈現相同的數據,但採用不同的形式(FTSOA表示餅圖和條形圖)。
我認爲有很多方法可以讓MyControl使用這些方法重新繪製面板。
首先使用VS爲每個面板添加一個繪畫事件。這是快速實現的,並允許方法訪問MyControl數據,因爲它們是在MyControl類中創建的。
其次重寫每個面板的OnPaint方法。 AFAIK要做到這一點,需要爲每個面板和關聯的類創建一個UserControl。然後,每個類的OnPaint方法都可以被覆蓋。缺點是每個類都必須被授予訪問MyControl數據的權限。
第三,它也可能(我沒有做過這件事)重寫MyControl OnPaint並手動重新繪製每個面板也是可能的 - 但掌握圖形等是一個問題。
問題: 我可以(1 & 2)工作,但我想知道其他人的想法。
啊。那麼繪製圖形和東西,也許我應該選擇一個圖片框。 我認爲你更喜歡前者,因爲它使用從UserForm派生的更少的類對象。 – 2012-08-16 17:43:47
經過一番調查後,我決定堅持使用Panel控件。 我仍然覺得這並不完美,但我想繪製圖形類型的線條,並擁有由擁有控件提供的數據,並對包括滾輪(平移/縮放/ ...)在內的鼠標事件作出響應,因此它需要有焦點太。 我很驚訝沒有專門爲此目標的2D繪圖控制。 – 2012-08-16 22:05:28