WPF / C#:禁用拖动和放大删除TextBoxes?

时间:2009-07-15 11:54:52

标签: c# wpf textbox drag-and-drop

有没有人知道如何禁用Drag和;删除所有我的文本框元素? 我找到了here的东西,但这需要我为所有元素运行一个循环。

4 个答案:

答案 0 :(得分:5)

在InitializeComponent()

之后使用以下内容
DataObject.AddCopyingHandler(textboxName, (sender, e) => { if (e.IsDragDrop) e.CancelCommand(); });

答案 1 :(得分:2)

您可以轻松地将本文描述的内容包装到附加的属性/行为中......

即。 TextBoxManager.AllowDrag =“False”(有关详细信息,请查看这两篇CodeProject文章 - Drag and Drop Sample和Glass Effect Sample link text

或试用新的Blend SDK的行为

<强>更新

  • 另请阅读Bill Kempf关于附加行为的this文章
  • 正如kek444在评论中指出的那样,您只需为textbxo whit创建一个默认样式,即附加属性集!

答案 2 :(得分:1)

从MyTextBox创建您的所有者用户控件:TextBox并覆盖:

    protected override void OnDragEnter(DragEventArgs e)
    {
        e.Handled = true;
    }

    protected override void OnDrop(DragEventArgs e)
    {
        e.Handled = true;
    }


    protected override void OnDragOver(DragEventArgs e)
    {
        e.Handled = true;
    }

答案 3 :(得分:1)

我个人创建了一个不允许拖动的自定义TextBox控件,如下所示:

/// <summary>
/// Represents a <see cref="TextBox"/> control that does not allow drag on its contents.
/// </summary>
public class NoDragTextBox:TextBox
{
    /// <summary>
    /// Initializes a new instance of the <see cref="NoDragTextBox"/> class.
    /// </summary>
    public NoDragTextBox()
    {
        DataObject.AddCopyingHandler(this, NoDragCopyingHandler);
    }

    private void NoDragCopyingHandler(object sender, DataObjectCopyingEventArgs e)
    {
        if (e.IsDragDrop)
        {
            e.CancelCommand();
        }
    }
}

而不是使用TextBox使用local:NoDragTextBox where&#34; local&#34;是NoDragTextBox程序集位置的别名。同样的上述逻辑也可以扩展,以防止在TextBox上复制/粘贴。

有关详细信息,请查看http://jigneshon.blogspot.be/2013/10/c-wpf-snippet-disabling-dragging-from.html

上对上述代码的引用