DevExpress WinForm GridControl 实现拖动多行到TreeView

参考文章:Drag-and-drop of multiple selected grid rows

如果列表有使用行内编辑功能,需要将列表的 OptionsBehavior.EditorShowMode 属性设置为 MouseUp 或者 Click

            private GridHitInfo downHitInfo = null;     private void myView_MouseDown(object sender, MouseEventArgs e)
        {
            GridView view = sender as GridView;
            downHitInfo = null;
            if (view != null)
            {
                GridHitInfo hitInfo = view.CalcHitInfo(new Point(e.X, e.Y));
                if (e.Button == MouseButtons.Left && hitInfo.InRow && hitInfo.HitTest != GridHitTest.RowIndicator)
                {
                    downHitInfo = hitInfo;
                }
            }
        }

        private void myView_MouseMove(object sender, MouseEventArgs e)
        {
            GridView view = sender as GridView;
            if (e.Button == MouseButtons.Left && downHitInfo != null)
            {
                Size dragSize = SystemInformation.DragSize;
                Rectangle dragRect = new Rectangle(new Point(downHitInfo.HitPoint.X - dragSize.Width/2,downHitInfo.HitPoint.Y - dragSize.Height/2), dragSize);

                if (!dragRect.Contains(new Point(e.X, e.Y)))
                {
                    if (view != null)
                    {
                        List<MyClass> myList = view.GetSelectedRows().Select(rownum => view.GetRow(rownum) as MyClass).ToList();
                        view.GridControl.DoDragDrop(myList, DragDropEffects.Move);
                    }
                    downHitInfo = null;
                    DevExpress.Utils.DXMouseEventArgs.GetMouseArgs(e).Handled = true;
                }
            }
        }

        private void myTreeView_DragOver(object sender, DragEventArgs e)
        {
            e.Effect = e.Data.GetDataPresent(typeof(List<MyClass>)) ? DragDropEffects.Move : DragDropEffects.None;
        }

        private void myTreeView_DragDrop(object sender, DragEventArgs e)
        {
            List<MyClass> modelData = (List<MyClass>)e.Data.GetData(typeof(List<MyClass>));
            TreeNode dropNode = this.myTreeView.GetNodeAt(myTreeView.PointToClient(new Point(e.X, e.Y)));
            //这里写拖动后想要执行的操作
        }
时间: 2024-10-12 00:52:00

DevExpress WinForm GridControl 实现拖动多行到TreeView的相关文章

[WinForm][DevExpress]自定义GridControl中按钮文字内容

最近项目开发中,使用到了GridControl的FindPanel,这样可以很好的对数据进行筛选,可是所展现的按钮文字是英文,如图: 那怎么定义两个按钮问题,以符合项目需求了?经过一番搜索发现利用GridLocalizer可以很好实现: 核心代码: public class BuilderGridLocalizer : GridLocalizer { Dictionary<GridStringId, string> CusLocalizedKeyValue = null; /// <su

devexpress中gridcontrol头部添加垂直线(右边框)

winform开发,用devexpress中的gridcontrol控件,头部默认是3D样式,当客户希望像内容一样扁平化显示且需要添加垂直线(右边框)时恶梦开始了..经过一阵摸索发现可以这样解决: 1.设置GridControl的GridView控件的PaintStyleName属性为Web 2.为GridControl的GridView控件添加CustomDrawColumnHeader事件,参考代码如下: private void gridView1_CustomDrawColumnHead

DevExpress Winform 通用控件打印方法(允许可自定义边距) z

DevExpress Winform 通用控件打印方法,包括gridcontrol,treelist,pivotGridControl,ChartControl,LayoutControl...(所有支持打印功能的控件) ,同时允许用户自定义报表标题,报表纸张类型(A4,A3...),报表边距 /// <summary> /// 打印功能 /// </summary> /// <param name="panel">打印控件</param>

DevExpress Winform 通用控件打印方法(允许可自定义边距)

DevExpress Winform 通用控件打印方法,包括gridcontrol,treelist,pivotGridControl,ChartControl,LayoutControl...(所有支持打印功能的控件) ,同时允许用户自定义报表标题,报表纸张类型(A4,A3...),报表边距 /// <summary>         /// 打印功能         /// </summary>         /// <param name="panel&qu

DevExpress的GridControl的实时加载数据解决方案(取代分页)

http://blog.csdn.net/educast/article/details/4769457 evExpress是一套第三方控件 其中有类似DataGridView的控件 今天把针对DevExpress.XtraGrid.GridControl实时加载数据的功能开发出来了 分享给大家 欢迎讨论 Code using System; using System.Collections.Generic; using System.Linq; using System.Text; using

DevExpress之GridControl

引用自:http://blog.csdn.net/mask_soft/article/details/8985454 GridView右键菜单 一.添加右键菜单 1.在VS工具箱中的"菜单和工具栏"找到ContextMenuStrip控件,双击添加. 2.点击ContextMenuStrip右上方的小三角形,打开编辑项,可以添加菜单项.至于菜单点击事件,这里就不多说了. 3.选择gridControl(注意这里不是gridView的属性),在属性中可以找到ContextMenuStri

devexpress中gridcontrol 一些样式改变

改变footer为扁平化效果 整个footer背景色CustomDrawFootere.Appearance.BackColor = Color.Transparent; e.Appearance.DrawBackground(e.Graphics, e.Cache, e.Bounds); e.Handled = true; 单个列footer背景CustomDrawFooterCelle.Appearance.BackColor = Color.Lavender; e.Appearance.D

DevExpress中GridControl的属性设置

1.隐藏最上面的GroupPanel gridView1.OptionsView.ShowGroupPanel=false; 2.得到当前选定记录某字段的值 sValue=Table.Rows[gridView1.FocusedRowHandle][FieldName].ToString(); 3.数据只读 gridView1.OptionsBehavior.Editable=false; 4.不显示MasterDetailView gridView1.OptionsDetail.EnableM

DevExpress winform XtraEditor常用控件

最近在公司里面开始使用DevExpress winform的第三方控件进行开发和维护,这里整理一些常用控件的资料以便于后续查看 ComboBoxEdit 这个控件和winform自带的控件差不多,使用起来也方便,在designer页面拖拽控件之后可以直接在页面添加要显示的项目: 后台的代码控制也方便 1 cbBoxSex.Properties.Items.Add("全部"); 2 cbBoxSex.Properties.Items.Add("男"); 3 cbBox