Foxtable(狐表)用户栏目专家坐堂 → 老师这个问题怎么解决


  共有2356人关注过本帖树形打印复制链接

主题:老师这个问题怎么解决

帅哥哟,离线,有人找我吗?
cd_tdh
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3106 积分:20733 威望:0 精华:0 注册:2016/3/28 16:57:00
老师这个问题怎么解决  发帖心情 Post By:2023/3/2 17:28:00 [只看该作者]

BeforeSelRangeChange事件代码:
Dim wz As Integer = e.Table.Current.Index
If e.Table.Current IsNot Nothing AndAlso e.Table.Current.DataRow.RowState <> DataRowState.Unchanged Then '如果当前行修改了
    MessageBox.Show("你的信息尚未保存,请先保存?", "提示")
    e.Cancel = True
End If
如果删除行会报错

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20230302172604.jpg
图片点击可在新窗口打开查看


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107721 积分:547938 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/3/2 17:34:00 [只看该作者]

提示是systemidle事件出错

 回到顶部
帅哥哟,离线,有人找我吗?
cd_tdh
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3106 积分:20733 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2023/3/3 8:49:00 [只看该作者]

第一句代码多余,会导致报错,代码修改为这样,编辑已有数据,没有保存没问题,但是新增行时,也会提示,该怎么解决呢?
Dim r As Row = e.Table.Current
If r IsNot Nothing Then
    If r.DataRow.RowState <> DataRowState.Unchanged Then '如果当前行修改了
        MessageBox.Show("你的信息尚未保存,你确定要退出吗?", "提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
        e.Cancel = True
    End If
End If


 回到顶部
帅哥哟,离线,有人找我吗?
cd_tdh
  4楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3106 积分:20733 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2023/3/3 8:55:00 [只看该作者]

没有选择不同行前的事件,要是有选择不同行前的事件来判断就好了

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107721 积分:547938 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/3/3 8:58:00 [只看该作者]

BeforeSelChange事件就是

 回到顶部
帅哥哟,离线,有人找我吗?
cd_tdh
  6楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3106 积分:20733 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2023/3/3 9:01:00 [只看该作者]

这个是事件,我没修改,也会提示,而且能把鼠标焦点换到其他行,而且新增行后,没法定位到新增的行,代码如下
If e.OldRange.RowSel <> e.NewRange.RowSel  Then'如果选择的是不同的行
    If e.OldRange.RowSel >= 0 AndAlso e.OldRange.Rowsel < e.Table.Rows.Count Then '而且原来选择的是一个有效的数据行
        Dim r As Row = e.Table.Rows(e.OldRange.Rowsel) '获得原来选择的行
        MessageBox.Show("没保存", "提示")
        e.Cancel=True
    End If
End If
[此贴子已经被作者于2023/3/3 9:06:34编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
cd_tdh
  7楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3106 积分:20733 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2023/3/3 9:29:00 [只看该作者]

代码错了,应该先e.Cancel = True,后提示
If e.OldRange.RowSel <> e.NewRange.RowSel  Then'如果选择的是不同的行
    If e.OldRange.RowSel >= 0 AndAlso e.OldRange.Rowsel < e.Table.Rows.Count Then '而且原来选择的是一个有效的数据行
        Dim r As Row = e.Table.Rows(e.OldRange.Rowsel) '获得原来选择的行
        If r.DataRow.RowState <> DataRowState.Unchanged Then
            e.Cancel = True
            msgbox("请先保存")
        End If
    End If
End If

 回到顶部