C1FlexGrid 与 C1Schedule 控件之间的数据拖拽

在商业应用系统中,控件之间的数据交互是常见功能之一,数据拖拽就是很典型的数据交互形式,本文讲述的功能也是来自实际的客户需求,将 C1FlexGrid 数据拖拽到 C1Schedule 中,以此来创建 Appointment 。实现 C1FlexGrid 与 C1Schedule 之间数据拖拽功能,有两种方案可供参考:

发布于 2013/06/06 00:00

在商业应用系统中,控件之间的数据交互是常见功能之一,数据拖拽就是很典型的数据交互形式,本文讲述的功能也是来自实际的客户需求,将 C1FlexGrid  数据拖拽到 C1Schedule 中,以此来创建 Appointment 。

实现 C1FlexGrid 与 C1Schedule 之间数据拖拽功能,有两种方案可供参考:

第一种:使用 C1FlexGrid 与 C1Schedule 内置的拖拽功能(完整代码请参考附件中的Form2)

通过内置的功能,用户只需设置以下两个属性便可实现数据的拖拽:

c1Schedule1.AllowDrop = true;
c1FlexGrid1.DragMode = DragModeEnum.Manual;

 

然后,在 C1Schedule 的 DragDrop 事件中设置 Appointment 对象的各种属性:

    void c1Schedule1_DragDrop(object sender, DragEventArgs e)
    {
        if (e.Data.GetDataPresent(typeof(C1.C1Schedule.Appointment)))
        {
            // 获取拖拽到 Schedule 上的 Appointment 对象
            C1.C1Schedule.Appointment app = e.Data.GetData(typeof(C1.C1Schedule.Appointment)) as C1.C1Schedule.Appointment;
 
            // 设置 Appointment 的任意属性
            app.Subject = app.Body;                
            app.Body = "测试任务";
        }
    }

 

运行程序,选中 C1FlexGrid 中的单元格,此时光标右上角会显示一个 + 号,按下鼠标左键将数据拖拽到 C1Schedule 中。

C1FlexGrid_DragDrop_1

 

第二种:使用自定义的 C1FlexGrid 拖拽行为(完整代码请参考附件中的Form1)

设置 C1FlexGrid 的以下属性之后,便可实现自定义的 C1FlexGrid 行为:

c1FlexGrid1.DragMode = DragModeEnum.Manual;

 

然后,在 C1FlexGrid 的 MouseDown 事件中调用 C1FlexGrid.DoDragDrop 方法:

    void c1FlexGrid1_MouseDown(object sender, MouseEventArgs e)
    {
        // 选中一个单元格之后,开启拖拽功能
        C1FlexGrid flex = sender as C1FlexGrid;
        HitTestInfo hti = flex.HitTest(e.X, e.Y);
 
        if (hti.Type == HitTestTypeEnum.Cell)
        {
            // 创建 Appointment,这里只设置了 Subject 属性
            // 还可以根据任务类型设置 Appointment 的时间、位置等属性
            C1.C1Schedule.Appointment app = new C1.C1Schedule.Appointment();
            app.Subject = flex[hti.Row, 0].ToString();
 
            flex.DoDragDrop(app, DragDropEffects.Copy);
        }
    }

 

最后在 C1Schedule.DragDrop 事件中接受拖拽的数据:

    void c1Schedule1_DragDrop(object sender, DragEventArgs e)
    {
        if (e.Data.GetDataPresent(typeof(C1.C1Schedule.Appointment)))
        {
            // 获取拖拽到 Schedule 上的 Appointment 对象
            C1.C1Schedule.Appointment app = e.Data.GetData(typeof(C1.C1Schedule.Appointment)) as C1.C1Schedule.Appointment;
 
            // 设置 Appointment 的任意属性
            app.Body = "测试任务";
        }
    }

 

运行程序,鼠标左键选中 C1FlexGrid 中的数据,拖拽到 C1Schedule 中:

C1FlexGrid_DragDrop_2

源码下载:VS2010 + ComponentOne Studio for WinForms 2013V1

关于葡萄城

葡萄城是专业的软件开发技术和低代码平台提供商,以“赋能开发者”为使命,致力于通过表格控件、低代码和BI等各类软件开发工具和服务,一站式满足开发者需求,帮助企业提升开发效率并创新开发模式。葡萄城开发技术始于1980年,40余年来始终聚焦软件开发技术,有深厚的技术积累和丰富的产品线。是业界能够同时赋能软件开发和低代码开发的企业。凭借过硬的产品能力、活跃的用户社区和丰富的伙伴生态,与超过3000家合作伙伴紧密合作,产品广泛应用于信息和软件服务、制造、交通运输、建筑、金融、能源、教育、公共管理等支柱产业。

推荐相关案例
推荐相关资源
关注微信
葡萄城社区二维码

关注“葡萄城社区”

加微信获取技术资讯

加微信获取技术资讯

想了解更多信息,请联系我们, 随时掌握技术资源和产品动态