【问题标题】:Drag and Drop element to new area将元素拖放到新区域
【发布时间】:2013-02-11 16:44:26
【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

    标签: .net drag-and-drop webforms


    【解决方案1】:

    经过大量搜索,我找到了this article,它描述了在 .NET 网络表单中拖放的要点。

    以下是要点:

    在您想要拖放的 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”访问移动的数据 - 这将返回一个可转换对象。

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

    【讨论】:

      猜你喜欢
      • 2022-09-24
      • 1970-01-01
      • 2017-12-12
      • 1970-01-01
      • 1970-01-01
      • 2016-03-27
      • 2013-11-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多