我的意图是编写一个 LabelOrText UserControl,其行为类似于 Label 或 TextField - 取决于其构造函数中的模式参数。UserControl 有一个 Text 属性,它包含一个 Label 和一个 TextField - 但一次只能看到两者中的一个。因此,在任何应用程序源中,我现在可以用我的 LabelOrText UserControl 替换所有标签和所有 TextFields,而无需更改任何源代码......(当然,不仅 Text 属性被委托给可见的内部控件,Font 属性和BackColor 属性和所有其他属性都委托给可见的内部控件...)
这工作正常,除了 DragOver 和 DragDrop 事件不能正常工作。
--> LabelOrText1.DragDrop += myDDHandler 应该像 Label1.DragDrop += myDDHandler 一样工作
--> LabelOrText1.DragOver += myDOHandler 应该像 Label1.DragOver += myDOHandler 一样工作
和
--> 使用鼠标在内部 Label 上的任何 DragOver 动作都应该调用 myDOHandler(o, e)
--> 使用鼠标在内部 Label 上的任何 DragDrop 操作都应该调用 myDDHandler(o, e)
所以在任何应用程序的源代码中用我的 LabelOrText UserControl 替换标签控件非常简单。
任何关于如何通过 UserControl 透明地从内部控件路由拖动事件的想法都将受到高度赞赏!