zoukankan      html  css  js  c++  java
  • 在C#中快速实现拖放操作

    拖放操作是一个我比较喜欢的用户体验,但实现起来稍显麻烦,这里我将它的常用方式简单的集合了一下,作为扩展方法,以便快速调用:

    static class DrapDropExtend
    {
        public static void SimpleDrapDrop<T>(this Control c, string dataformat, Action<T> hanlder) where T : class
        {
            c.AllowDrop = true;
            c.DragEnter += (s, e) =>
                {
                    if (e.Data.GetDataPresent(dataformat))
                        e.Effect = DragDropEffects.Copy;
                    else
                        e.Effect = DragDropEffects.None;
                };

            c.DragDrop += (s, e) =>
                {
                    var data = e.Data.GetData(dataformat) as T;
                    hanlder(data);
                };
        }

        public static void SimpleDrapDrop(this Control c, Action<DragEventArgs> enterHanlder, Action<DragEventArgs> dropHanlder)
        {
            c.AllowDrop = true;
            c.DragEnter += (s, e) => enterHanlder(e);
            c.DragDrop += (s, e) => enterHanlder(e);
        }

        public static void SimpleDrapDrop(this Control c, DragEventHandler enterHanlder, DragEventHandler dropHanlder)
        {
            c.AllowDrop = true;
            c.DragEnter += enterHanlder;
            c.DragDrop += dropHanlder;
        }
    }

    该类使得实现拖放更加简单了,一个简单的示例如下:

    public Form1()
    {
        InitializeComponent();
        this.SimpleDrapDrop<string>(DataFormats.Text, x => this.Text = x);
    }

    这比通过IDE来实现要简洁得多。

  • 相关阅读:
    java_oop_方法2
    POJ 3276 Face The Right Way(反转)
    POJ 3276 Face The Right Way(反转)
    POJ 2566 Bound Found(尺取法,前缀和)
    POJ 2566 Bound Found(尺取法,前缀和)
    POJ 3320 Jessica's Reading Problem(尺取法)
    POJ 3320 Jessica's Reading Problem(尺取法)
    POJ 3061 Subsequence(尺取法)
    POJ 3061 Subsequence(尺取法)
    HDU 1222 Wolf and Rabbit(欧几里得)
  • 原文地址:https://www.cnblogs.com/TianFang/p/1294984.html
Copyright © 2011-2022 走看看