移出我的表单时更改 DragEffect

Posted

技术标签:

【中文标题】移出我的表单时更改 DragEffect【英文标题】:Changing DragEffect when moving out of my form 【发布时间】:2021-02-10 00:06:33 【问题描述】:

我有一个包含组件的表单,这些组件可以拖出我的表单以独立使用。

在我的组件的 QueryContinueDrag 事件中,如果 QueryContinueDragEventArgs.Action 是 Drop 我测试我的组件是否处于活动表单中。如果没有,我创建一个新表单并将其放在光标所在的位置。

问题是,dragEffect 表明我无法退出表单。有什么办法可以改变吗?

这里不能发布太多代码,因为它比这更复杂。但如果需要,我会尝试做一个简单的项目来显示我的问题。

【问题讨论】:

您可以在拖动某些东西时更改光标。在 QueryContinueDrag 中试试这个:switch (e.Action) case DragAction.Continue: if (!this.Bounds.Contains(MousePosition)) Cursor.Current = Cursors.Help; break; case DragAction.Drop: if (!this.Bounds.Contains(MousePosition)) /* new Form */ break; 你可以在 GiveFeedback 中做同样的事情,检查光标位置并设置e.UseDefaultCursors = false; Cursor.Current = Cursors.Help; 如果位置超出界限,否则设置e.UseDefaultCursors = true;(现在无法测试,看看情况如何) 【参考方案1】:

根据Jimi:

您可以在拖动某些东西时更改光标。

在 QueryContinueDrag 中试试这个:

switch (e.Action)

    case DragAction.Continue:
        if (!this.Bounds.Contains(MousePosition))
            Cursor.Current = Cursors.Help;
        break;
    case DragAction.Drop:
        if (!this.Bounds.Contains(MousePosition))
        
            // new Form
        
        break;

您可以在GiveFeedback 中执行相同的操作,检查光标位置,如果位置超出边界则设置e.UseDefaultCursors = false; Cursor.Current = Cursors.Help;,否则设置e.UseDefaultCursors = true;

【讨论】:

以上是关于移出我的表单时更改 DragEffect的主要内容,如果未能解决你的问题,请参考以下文章

jQuery在div移出屏幕之前停止左动画

访问:当我输入新记录时,更改不会出现在我的子表单中

如何更正错误未捕获的 typeError 验证器未定义并防止我的表单在错误时发布

更改表单过滤器时访问崩溃

表单提交时更改的值(下拉表单)

使用 Angular 提交表单时更改类并显示消息