我在一个需要一些花哨的自定义控件的应用程序上工作。从 .net Control 类继承导致了各种问题,并且随着时间的推移使事情变得更加困难。我不会在这里详细介绍,但我正在创建自己的轻量级控制架构以避免其中一些问题。一切都很好,但我需要在我的架构中添加拖放功能。
到目前为止,我提出的所有方法似乎都很混乱且容易出错。我在很多方面都在模仿 .net Control 类,并且使用 .net 反射器获得了很大的好处,但是我在弄清楚如何使我的拖动事件触发(DragDrop、DragEnter、DragLeave)时遇到了问题。
我只是想不出一种干净的方法来触发这些事件。有没有人有任何想法?
到目前为止,我想出的最好的方法是实现 IDropTarget 接口并希望我的事件能够触发。他们不。
@tamberg:我通读了那篇文章,这并不是我真正想要的(不过谢谢)。我的问题是我不知道如何实现事件系统。例如,我如何知道数据对象何时被拖到我的自定义控件类上?如何引发这些事件(DragOver、DragDrop 等)?
示例中的所有控件都继承自 System.Windows.Forms.Control,这是我要避免的。