0

我正在从事一个爱好项目,以加强我的应用程序开发技能。有一件特别的事情给我带来了一些麻烦。

我的项目是用于 D&D 的字符生成器。在一个部分中,我正在生成属性分数。我有一个打开“生成”面板的按钮。生成面板有 6 个属性区域,当它们满足某些要求(从列表中选择生成方法并单击按钮)时,它们会以编程方式填充。

每种生成方法都允许用户将六个分数分配给他们的六个属性。

我可以很容易地让这些可点击的按钮打开一个对话框(或模式,或类似的)来选择在哪里分配选定的分数,但这不会教给我任何新东西。

相反,我想做的是让用户将属性分数(当前是面板中的一个文本框)拖放到他们想要分配给它的属性(当前每个属性都是由一个文本框组成的,一个标签和另一个文本框,我希望用户能够将值放入这三个区域中的任何一个)。

我还想允许用户在属性分数之间拖放值,但这应该很容易从第一部分的答案中遵循。

简而言之,如何使用户能够将控件的值拖动到应用程序中的另一个控件

4

1 回答 1

0

经过大量搜索,我找到了这篇描述 .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”访问移动的数据——这将返回一个可转换对象。

这并不能解决我的一些问题(值得注意的是,鼠标没有携带数据的“影子”),但这是一个很好的第一步。

于 2013-02-12T15:50:15.857 回答