找回密码
 立即注册

QQ登录

只需一步,快速开始

凡墨
注册会员   /  发表于:2022-1-14 17:06  /   查看:3011  /  回复:16
1,红框里面是可编辑区域,外面不可编辑
     我能搞定

2,回车键  动作
      a->b->a1->b1->a2->b2
      先横向 在纵向

3,我如何知道某个cell是可见的。
       滚动时我想判断某个选择的cell是否还可以看见



本帖子中包含更多资源

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

x

16 个回复

正序浏览
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-1-14 18:23:02
推荐
本帖最后由 Richard.Ma 于 2022-1-14 18:24 编辑

2,此问题可以通过自定义键盘事件
首先取消enter键原本的行为
c1FlexGrid1.KeyActionEnter = KeyActionEnum.None;
然后定义事件c1FlexGrid1.KeyPressEdit += C1FlexGrid1_KeyPressEdit;
  1.         private void C1FlexGrid1_KeyDownEdit(object sender, KeyEditEventArgs e)
  2.         {
  3.             if(e.KeyCode == Keys.Enter)
  4.             {
  5.                 if (e.Col == 3)
  6.                 {
  7.                     c1FlexGrid1.Row = c1FlexGrid1.Row + 1;
  8.                     c1FlexGrid1.Col = 2;
  9.                 }
  10.                 else
  11.                 {
  12.                     c1FlexGrid1.Col = c1FlexGrid1.Col +1;
  13.                 }
  14.                
  15.             }
  16.         }
复制代码


上述代码可以实现2,3列按行切换

3如果你说的是可视区域的话,可以判断该单元格是否在BottomRow和TopRow之间,以及是否在LeftCol和RightCol之间


4.这个没有直接的接口,其实最简单的办法是你直接去判断绑定的数据源这列是否有重复值就行,通过Linq可以很简单的查询到

最后,有一个小建议,每次发帖还是一个问题发一个帖子,方便单独讨论,后续用户要查看也清晰一些


            

回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-1-20 11:12:49
17#
这个本来就是这样的,在c#中也是这样,是控件本身的行为,一次是进入单元格编辑状态方便编辑,
第二次才是切换单元格

这个目前没有办法改变
回复 使用道具 举报
凡墨
注册会员   /  发表于:2022-1-20 10:52:48
16#
感觉:
第一次回车是为了修改cell中的内容
第二次回车是接受cell中的内容,进入下一个cell

我的项目是Vb升级的项目是从其他的grid该为C1FlexGrid的
是不是那个属性设置的不对造成的?
回复 使用道具 举报
凡墨
注册会员   /  发表于:2022-1-20 10:47:12
15#
我观察了一下我的demo程序
需要两次回车,才能移动到下一个cell中
第一次回车不会触发事件,感觉第一次回车的目的是

第二次回车才会触发事件,进入代码。


本帖子中包含更多资源

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

x
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-1-18 18:03:38
14#
好的
回复 使用道具 举报
凡墨
注册会员   /  发表于:2022-1-18 18:00:41
13#
我做了个demo是可以的,但是在我的项目里就是不行。多谢
我在看看
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-1-18 14:20:32
12#
请上传一个重现问题的简单demo我帮你看看,理论上来说vb和c#应该是没有区别的
回复 使用道具 举报
凡墨
注册会员   /  发表于:2022-1-18 12:26:57
11#

回车事件两次调用这个方法。两次调用的结果 是没有左右移动
我设置 .Handled = True 也没有作用。还是调用两遍

Private Sub MsGrd_KeyPress(ByVal eventSender As System.Object, ByVal eventArgs As System.Windows.Forms.KeyPressEventArgs)

        Dim KeyCode As Short = Asc(eventArgs.KeyChar)

        If KeyCode = ENTER_KEY Then
            If MsGrd.Col = 6 Then
                MsGrd.Row = MsGrd.Row + 1
                MsGrd.Col = 5
                eventArgs.Handled = True
            Else
                MsGrd.Col = MsGrd.Col + 1
                eventArgs.Handled = True
            End If
        End If
    End Sub

回复 使用道具 举报
凡墨
注册会员   /  发表于:2022-1-18 10:57:39
10#
不好意思,我看错了。我在试一试
回复 使用道具 举报
凡墨
注册会员   /  发表于:2022-1-18 10:54:58
9#
不好意思我看错了,我在试一试
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部