当前位置: 首页 > 编程语言 > C#

如何处理GetDataPresent以便它接受所有派生类型Share

时间:2023-04-10 19:59:11 C#

HowtohandleGetDataPresentsothatitacceptallderivedtypes我有一个问题,我想接受一个特定的类型,比如SomeType和从它派生的所有类型。GetDataPresent好像不支持这样的请求。有任何想法吗?只是不要使用GetDataPresent(),它是样板文件,但您可以按照自己的方式自由使用。实际检索对象并检查您是否对其类型感到满意:if(typeof(Base).IsAssignableFrom(obj.GetType())){drgevent.Effect=DragDropEffects.Copy;}}其中Base是基类的名称。虽然GetFormats()的使用可能看起来很奇怪,但这种方法保证有效,因为拖动.NET对象只会生成一种格式,即对象类型的显示名称。这就是GetDataPresent不能用于派生对象的原因。我以前回答过一个类似的问题:C#Drag-Drop-usinge.Data.GetDataofthebaseclass你可以做的是创建一个容器类来保存你正在拖动的数据。然后在GetDataPresent中检查容器类类型,如果存在,则可以读取包含数据实际实例的内容成员。这是一个简单的示例,如果您的基本类型是DragDropBaseData,您可以创建以下DragDropInfo类。公共类DragDropInfo{公共DragDropBaseData值{得到;私有集;}publicDragDropInfo(DragDropBaseDatavalue){this.Value=value;然后可以使用以下命令启动拖放,其中DrafDropDerivedData是从DragDropBaseData派生的类。DoDragDrop(newDragDropInfo(newDragDropDerivedData()),DragDropEffects.All);您可以使用以下方法访问拖动事件中的数据。大家有用,需要多了解C#学习教程。希望大家多多关注——e.Data.GetData(typeof(DragDropInfo));本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: