zoukankan      html  css  js  c++  java
  • 鼠标拖动事件之从ButtonN到TextBox

           所有的拖放操作都以拖动开始,对象的DoDragDrop方法实现了拖动开始时的数据收集功能.(ListViewTreeView控件具有ItemDrag事件)

      :

    MouseDown事件启动拖动操作(最直观的启动事件), 使用DoDragDrop设置将被拖动的数据和拖放效果:

    this.button1.MouseDown+=new MouseEventHandler(button1_MouseDown);

     

    private void button1_MouseDown(object sender, MouseEventArgs e)

    {

           button1.DoDragDrop(button1.Text,DragDropEffects.Copy|DragDropEffects.Move);

    }


            拖动开始于按钮控件,被拖动的数据为字符串(Button控件的Text属性),允许的拖动效果为复制或移动.任何数据都可以被作为DoDragDrop方法的参数.

        拖动操作开始后,开始处理QueryContinueDrag事件,以向系统请求继续拖动操作的许可.

        现在未真正实现拖放,因为目前不存在可接受被拖动数据的目标.

     

    放置数据

    Windows窗体或控件中的任何区域都可以接受数据,是需要将其AllowDrop属性设置为true,并处理DragEnterDragDrop事件即可.

    步骤如下:

    A.将窗体或控件的AllowDrop属性设置为true.

    B添加DragEnter事件

    this.textBox1.DragEnter += new System.Windows.Forms.DragEventHandler(this.textBox1_DragEnter);

            

    private void textBox1_DragEnter(object sender, DragEventArgs e)

    {      
            
    if(e.Data.GetDataPresent(DataFormats.Text))

            {      

                      e.Effect=DragDropEffects.Copy;

            }

            else

            {        

                    e.Effect=DragDropEffects.None;

            }

    }

    Cif执行类型检查,确保数据是可以接受的类型,然后设置DragDropEffects枚举,以指定放置发生时的效果.

    D为文本框添加DragDrop事件

    this.textBox1.DragDrop+=new DragEventHandler(textBox1_DragDrop);

     

    private void textBox1_DragDrop(object sender, DragEventArgs e)

    {

            textBox1.Text=e.Data.GetData(DataFormats.Text).ToString();

    }

    使用GetData方法获取被放置的数据.(文本框的Text属性设置为被放置的文本)

    E鼠标移动到文本框时,鼠标指针变成可添加标志,激发事件为文本框控件的DragEnter,

      松开鼠标左键, Text属性被赋值,激发事件为文本框控件的DragDrop

    F拖放中,根据KeyState属性决定拖放操作的具体效果.Ctrl执行复制操作


    G Effect属性可设置为DragDropEffects枚举
        All         从拖动源复制或移除数据,并将其滚动到放置目标中
        Copy     复制 
        Link       链接
        Move     移动
        None     放置目标不接受该数据
        Scroll     将在放置目标中开始滚动或当前正在滚动
  • 相关阅读:
    hdu5728 PowMod
    CF1156E Special Segments of Permutation
    CF1182E Product Oriented Recurrence
    CF1082E Increasing Frequency
    CF623B Array GCD
    CF1168B Good Triple
    CF1175E Minimal Segment Cover
    php 正则
    windows 下安装composer
    windows apache "The requested operation has failed" 启动失败
  • 原文地址:https://www.cnblogs.com/Amor/p/216756.html
Copyright © 2011-2022 走看看