找回密码
 立即注册

QQ登录

只需一步,快速开始

老赵摄

注册会员

3

主题

19

帖子

140

积分

注册会员

积分
140
最新发帖
老赵摄
注册会员   /  发表于:2022-8-29 23:05  /   查看:2688  /  回复:6
在程序中已经在某列绑定了c1MultiSelect为编辑器,现在想调用c1flexgrid的鼠标双击事件来打开c1MultiSelect。请问应该怎么处理?

6 个回复

倒序浏览
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-8-30 09:35:10
沙发
在MouseDoubleClick事件中加上下面的代码看看

  1.         private void C1FlexGrid1_MouseDoubleClick(object sender, MouseEventArgs e)
  2.         {
  3.             c1FlexGrid1.StartEditing(c1FlexGrid1.Row, c1FlexGrid1.Col);
  4.         }
复制代码
回复 使用道具 举报
老赵摄
注册会员   /  发表于:2022-8-30 15:49:00
板凳
马老师,可能的帖子交待不清楚。我的想法是:点击右键菜单,1、如果能直接弹出c1MultiSelect的下拉多选框则更好,哪就可以不用鼠标双击事件了。2,如果1实现不了,则通过引发c1flexgrid的鼠标双击事件的代码,进而弹出c1MultiSelect的下拉多选框。反正我的目的是弹出下拉多选框。不知,我这样的想法如何能实现
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-8-30 18:05:20
地板
定义变量HitTestInfo info;

右键点击事件中,通过c1FlexGrid1.HitTest(e.X,e.Y);获取到HitTestInfo(包含行列信息)
  1.         private void C1FlexGrid1_MouseClick2(object sender, MouseEventArgs e)
  2.         {
  3.             if(e.Button==  MouseButtons.Right)
  4.                 info = c1FlexGrid1.HitTest(e.X,e.Y);
  5.         }
复制代码


在menuitem点击事件中再startediting
  1. var mi = new MenuItem();
  2.             
  3.             mi.Click += new EventHandler((s,e) =>
  4.             {
  5.                
  6.                 c1FlexGrid1.StartEditing(info.Row, info.Column);
  7.             });
  8.             var cm = new ContextMenu();
  9.             cm.MenuItems.Add(mi);
  10.             c1FlexGrid1.ContextMenu = cm;
复制代码
回复 使用道具 举报
老赵摄
注册会员   /  发表于:2022-8-30 22:18:05
5#
不好意思,我给你Demo。
回复 使用道具 举报
老赵摄
注册会员   /  发表于:2022-8-30 22:20:36
6#
我的程序是VB.net的,麻烦您给看下,问题出在哪里。谢谢Imports C1.Win.C1FlexGrid

Public Class Form1
    Private Info As HitTestInfo

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load


        C1FlexGrid1.Rows.Count = 7
        C1FlexGrid1.Cols.Count = 6
        C1FlexGrid1.Rows.MinSize = 30

        C1FlexGrid1.Cols(3).Width = 250
        C1FlexGrid1.Cols(3).Editor = C1MultiSelect1

        C1MultiSelect1.Separator = "/"


        C1FlexGrid1(1, 3) = ""

        C1FlexGrid1(2, 3) = "张三/李四/"

        C1FlexGrid1(3, 3) = "李小二/张三/"

        C1FlexGrid1(4, 3) = "许忠义/张三/李四/"



        C1FlexGrid1.Cols(5).Width = 250
        C1FlexGrid1.Cols(5).Editor = C1CheckList1

        C1FlexGrid1(1, 5) = "李小二/张三/李四/"

        C1FlexGrid1(2, 5) = "张三/李四/"

        C1FlexGrid1(3, 5) = "李小二/张三/"

        C1FlexGrid1(4, 5) = "许忠义/张三/李四/"

        C1FlexGrid1.ContextMenuStrip = ContextMenuStrip1

    End Sub

    Private Sub C1FlexGrid1_MouseClick(sender As Object, e As MouseEventArgs) Handles C1FlexGrid1.MouseClick
        ' If (e.Button = Windows.Forms.MouseButtons.Left) Then
        Info = C1FlexGrid1.HitTest(e.X, e.Y)
        '  MsgBox("Info.e.X=" & Info.X & Chr(13) & "Info.e.Y=" & Info.Y & Chr(13) & "Info.Row=" & Info.Row & Chr(13) & "Info.Col=" & Info.Column)
        ' End If

    End Sub

    Private Sub C1FlexGrid1_MouseDoubleClick(sender As Object, e As MouseEventArgs) Handles C1FlexGrid1.MouseDoubleClick


        If C1FlexGrid1.Col = 3 Then


            If IsNothing(C1FlexGrid1(C1FlexGrid1.Row, 3)) Then
                C1MultiSelect1.Text = ""
            Else
                C1MultiSelect1.Text = C1FlexGrid1(C1FlexGrid1.Row, 3)
            End If


            Dim cText As String = C1MultiSelect1.Text
            For Each item In C1MultiSelect1.Items
                If cText.Contains(item.Value.ToString) Then
                    item.Selected = True
                End If
            Next

        End If

        If C1FlexGrid1.Col = 5 Then
            C1CheckList1.Height = 100
            Dim cText As String = C1FlexGrid1(C1FlexGrid1.Row, 5)
            For Each item In C1CheckList1.Items
                If cText.Contains(item.Value.ToString) Then
                    item.Selected = True
                End If
            Next

        End If

    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click      '充填下拉复选框内容

        Dim kk As String() = "李小二|张三|李四|许忠义|尚飞".Split("|")
        Dim i%

        For i = 0 To kk.Count - 1
            C1MultiSelect1.Items.Add(kk(i))
            C1CheckList1.Items.Add(kk(i))
        Next

    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click   '清除下拉复选内容
        If C1MultiSelect1.Items.Count > 0 Then C1MultiSelect1.Items.Clear()
    End Sub


    Private Sub 人员安排ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 人员安排ToolStripMenuItem.Click

        C1FlexGrid1.StartEditing(C1FlexGrid1.Row, 3)


    End Sub
End Class


回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-8-31 10:29:57
7#
这里应该是Right右键点开菜单的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部