一个例子:
使用 VS,我可以创建派生自 UserControl 的 MyControl,可以向其中添加一组数据作为成员或属性。使用可视化设计器,我可以将两个面板添加到 MyControl - 每个面板都旨在使用我打算提供的方法以不同的形式呈现相同的数据(FTSOA 说是饼图和条形图)。
我认为有许多方法可以让 MyControl 使用这些方法来重绘面板。
首先使用 VS 为每个面板添加一个绘制事件。这可以快速实现,并允许方法访问 MyControl 数据,因为它们是在 MyControl 类中创建的。
其次为每个面板覆盖 OnPaint 方法。AFAIK 要做到这一点,需要为每个具有关联类的面板创建一个 UserControl。然后可以覆盖每个类的 OnPaint 方法。缺点是每个类都必须有权访问 MyControl 数据。
第三,也有可能(我没有做过这个)覆盖 MyControl OnPaint 并手动重新绘制每个面板也是可能的 - 但掌握图形等是一个问题。
问题:我可以让 (1 & 2) 工作,但我想知道其他人的想法。