(这可能是一个愚蠢的问题和一个WTF合并,但这里什么都没有)
我想在界面中“绘制”线条或区域 - 通常是TableLayoutPanel内的分隔符。目前我所做的只是将一个Panel转储到行中并将其设置为Dock = Fill并为其提供所需的背景颜色。
在做同样的事情之前,我想知道另一个控件(Label?)是否可能更轻量级。或者也许我应该通过从Control继承我自己?
还有其他解决方案吗?
答案 0 :(得分:7)
我会继承Control
并创建您自己的所有其他控件,包括Label
和Panel
直接或间接从Control
继承。这也允许您将功能与其他功能分开封装。
我还认为您也可以覆盖Paint
的{{1}}事件,或者继承此事件,将其设为自己的并绘制线条。
答案 1 :(得分:1)
我会看一下ControlPaint类,它有several methods绘制线条等,专门用于绘制系统相似的线条。覆盖paint事件或继承Daniel说并在那里画线。
答案 2 :(得分:1)
这是微软的一个开箱即用的解决方案。
结帐Visual Basic PowerPack 3.0。不要过分担心名称 - 这些是Visual Basic团队的组件,但它们也适用于C#开发人员。
其中一个组件是LineShape
,它完全符合您对该名称的期望。
如果您要定位框架的早期版本,则可以在应用程序中包含程序集。但是,如果您的目标是3.5 SP1或更高版本,则会包含powerpack。
答案 3 :(得分:0)
你为什么要自己写?这对我来说似乎是不成熟的优化。你还需要通过轻量级,内存使用,处理器周期等来定义你的意思。如果你真的那么关心性能我会从控制继承但我不会沿着这条路走下去,除非测试显示你当前的解决方案没有因某种原因无法工作。