• RichTextBox的拖放功能DragDrop


    参考:http://blog.iordanov.info/?p=32

    实现RichTextBox的拖放功能只要设置EnableAutoDragDrop = true就自动实现了,非常简单。但是要实现一些个性化的控制,就有一点复杂了。

    我需要实现的是:如果拖放文件进来,不想默认的一样嵌入一个对象连接,而是把文件上传;其他情况就想默认一样。

    首先得设定AllowDrop = true;但是vs的控件的事件设定里面是没有DragEnter和DragDrop事件的,只能手工写代码。

       //添加事件
        private void AddRtb1Event()
            {
                rtb1.AllowDrop = true;
                
                rtb1.DragEnter += new DragEventHandler(rtb1_DragEnter);
                rtb1.DragDrop += new DragEventHandler(rtb1_DragDrop);
                
            }       
            private void rtb1_DragEnter(object sender, DragEventArgs e)
            {
                e.Effect = DragDropEffects.Copy  ;
                String[] supportedFormats = e.Data.GetFormats(true);
                if (supportedFormats != null)
                {
                    List<string> sfList = new List<string>(supportedFormats);
                    if (sfList.Contains(DataFormats.FileDrop.ToString()) )
                    {
                        rtb1.EnableAutoDragDrop = false;
                    }
                    else
                    {
                        rtb1.EnableAutoDragDrop = true;
    
                    }
                }
    
                
            }
    
            private void rtb1_DragDrop(object sender, DragEventArgs e)
            {
                String[] supportedFormats = e.Data.GetFormats(true);
                if (supportedFormats != null)
                {
                    List<string> sfList = new List<string>(supportedFormats);
                    if (sfList.Contains(DataFormats.FileDrop.ToString()))
                    {
                        string[] fileList = (string[])((System.Array)e.Data.GetData(DataFormats.FileDrop));
                        foreach (string fileName in fileList)
                        {
                            MessageBox.Show(fileName);
                        }
                    }
                }
                rtb1.EnableAutoDragDrop = true;
            }
    
        }
  • 相关阅读:
    4、路由事件 RoutedEvent
    3、Grid、GridSplitter 网格分离器、SharedSizeGroup 共享尺寸组
    2、DockPanel
    1、布局容器Grid、StackPanel、GroupBox、DockPanel、WrapPanel
    15、Qt 样式表
    14、SpinBox与Horizontal Scroll Bar
    13、Qt界面布局
    12、label控件
    11、LineEdit与setCompleter自动补全
    Linux设备模型 (2)
  • 原文地址:https://www.cnblogs.com/eyye/p/2743065.html
Copyright © 2020-2023  润新知