我正在开展一个爱好项目,以加强我的应用程序开发技能。有一件特别的东西给了我一些麻烦。
我的项目是D& D的角色生成器。在一个部分中,我正在生成属性分数。我有一个打开'生成'面板的按钮。生成面板有6个属性区域,当它们满足一些要求时(从列表中选择生成方法并单击按钮),可以编程填充。
每种生成方法只允许用户将六个分数分配给它们的六个属性。
我可以很容易地将这些可点击的按钮打开一个对话框(或模态或类似的)来选择分配所选分数的位置,但这不会教我任何新的东西。
我想要做的是让用户将属性分数(当前是面板中的文本框)拖放到他们想要分配给它的属性中(目前每个属性都来自一个属性)文本框,标签和另一个文本框,我希望用户能够将值放入这三个区域中的任何一个区域。)
我还想允许用户在属性分数之间拖放值,但是从第一部分的答案中可以很容易地遵循。
简而言之,如何让用户将控件的值拖动到应用程序中的另一个控件?
答案 0 :(得分:0)
经过大量的搜索,我发现this article描述了在.NET webforms中拖放的基本要素。
以下复制的要点是:
在要拖放的MouseDown事件中,触发“DoDragDrop”事件,传入要删除的数据和DragDropEffects值,以实现您想要实现的目标。
在可以接受拖放的对象的MouseEnter事件中,运行如下代码:
if ((e.AllowedEffect & DragDropEffects.Link) != 0
&& e.Data.GetDataPresent(typeof(string)))
e.Effect = DragDropEffects.Link;
e.AllowedEffect是按位的,可以匹配多个效果。
设置e.Effect表示控件可以接受丢弃的数据。您设置为“.Effect”的效果决定了鼠标的外观。
最后,在'DragDrop'事件中,无论控件接受丢弃的数据,您都可以使用'e.Data.GetData'访问移动的数据 - 这将返回一个可转换的对象。
这并不能解决我的一些问题(特别是鼠标没有携带数据的'阴影'),但这是一个很好的第一步。