Foxtable(狐表)用户栏目专家坐堂 → keydown事件问题


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

主题:keydown事件问题

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


加好友 发短信
等级:八尾狐 帖子:1936 积分:14844 威望:0 精华:0 注册:2016/4/28 9:58:00
keydown事件问题  发帖心情 Post By:2020/1/6 20:08:00 [只看该作者]



If e.KeyCode = Keys.Enter Then
    e.sender.WriteValue
    If val(StrToNarrow(e.Sender.Text)) > val(e.Form.Controls("textbox2").text) Then
        MessageBox.show("请注意,你输入值大于了设定值","提示",MessageBoxButtons.OK)
        e.Sender.Select
        e.Sender.Text = ""
    Else
        If e.sender.text = ""
            e.sender.value = "0"
        End If
        'e.Form.Controls("textbox10").Select
        If Tables("小学统分(改)_table1").Position < Tables("小学统分(改)_table1").Rows.Count-1 Then
            Tables("小学统分(改)_table1").Position += 1
            
            DataTables("成绩").Save()
        End If        
    End If    
    e.Cancel = True
End If


老师,请问我在NumericComboBox的keydown事件中实现,当box中不输入内容直接回车时向表中输入0,因为表中不为零算平均时好像是不算,这样能在零的情况下不输入,原来都可以,现在不得行了呢,哪里有问题?

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


加好友 发短信
等级:超级版主 帖子:106178 积分:540007 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/1/6 20:19:00 [只看该作者]

换个位置
……
        End If        
    End If    
    e.sender.WriteValue
    e.Cancel = True
End If

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


加好友 发短信
等级:八尾狐 帖子:1936 积分:14844 威望:0 精华:0 注册:2016/4/28 9:58:00
  发帖心情 Post By:2020/1/6 20:23:00 [只看该作者]

还是不行,并且这样输入什么数据都不能输入到表了
[此贴子已经被作者于2020/1/6 20:24:24编辑过]

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


加好友 发短信
等级:八尾狐 帖子:1936 积分:14844 威望:0 精华:0 注册:2016/4/28 9:58:00
  发帖心情 Post By:2020/1/6 20:47:00 [只看该作者]

If e.KeyCode = Keys.Enter Then
    e.sender.WriteValue
    If val(StrToNarrow(e.Sender.Text)) > val(e.Form.Controls("textbox2").text) Then
        MessageBox.show("请注意,你输入值大于了设定值","提示",MessageBoxButtons.OK)
        e.Sender.Select
        e.Sender.Text = ""
    Else
        If e.sender.text = ""
            e.sender.value = "0"
        End If
        e.Sender.Select
        If Tables("小学统分(改)_table1").Position < Tables("小学统分(改)_table1").Rows.Count-1 Then
            Tables("小学统分(改)_table1").Position += 1
            DataTables("成绩").Save()
        End If
    End If
    e.Cancel = True
End If
老师,经测试,不要红色部分,可以在不输入数字回车会自动输入0,但我需要回车后自动换行,怎么办?

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


加好友 发短信
等级:超级版主 帖子:106178 积分:540007 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/1/6 20:47:00 [只看该作者]

我测试是可以的。上传具体实例说明。


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


加好友 发短信
等级:八尾狐 帖子:1936 积分:14844 威望:0 精华:0 注册:2016/4/28 9:58:00
  发帖心情 Post By:2020/1/6 20:56:00 [只看该作者]

If e.KeyCode = Keys.Enter Then
    e.sender.WriteValue
    If val(StrToNarrow(e.Sender.Text)) > val(e.Form.Controls("textbox2").text) Then
        MessageBox.show("请注意,你输入值大于了设定值","提示",MessageBoxButtons.OK)
        e.Sender.Select
        e.Sender.Text = ""
    Else
        If e.sender.text = ""
            e.sender.value = "0"
            e.Form.Controls("textbox2").Select   ‘窗口不一个无关的控件
            e.Form.Controls("textbox4").Select   、当前控件
            e.sender.select
        End If
        If Tables("小学统分(改)_table1").Position < Tables("小学统分(改)_table1").Rows.Count-1 Then
            Tables("小学统分(改)_table1").Position += 1            
            DataTables("成绩").Save()
        End If        
    End If    
    e.Cancel = True
End If


老师,终于发现,当加上红色的代码,选定其他控件,然后再回到当前输入框就可以,如直直接用蓝色代码就不得行,请问是什么原因,怎么改进呢,我觉得这样写有点别扭

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


加好友 发短信
等级:超级版主 帖子:106178 积分:540007 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/1/6 21:54:00 [只看该作者]

If e.KeyCode = Keys.Enter Then

    If val(StrToNarrow(e.Sender.Text)) > val(e.Form.Controls("textbox2").text) Then
        MessageBox.show("请注意,你输入值大于了设定值","提示",MessageBoxButtons.OK)
        e.Sender.Select
        e.Sender.Text = ""
    Else
        If e.sender.text = ""
            e.sender.value = "0"
        End If
    e.sender.WriteValue '放在这个位置试试
        e.Sender.Select
        If Tables("小学统分(改)_table1").Position < Tables("小学统分(改)_table1").Rows.Count-1 Then
            Tables("小学统分(改)_table1").Position += 1
            DataTables("成绩").Save()
        End If
    End If
    e.Cancel = True
End If

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


加好友 发短信
等级:八尾狐 帖子:1936 积分:14844 威望:0 精华:0 注册:2016/4/28 9:58:00
  发帖心情 Post By:2020/1/6 22:20:00 [只看该作者]

If e.KeyCode = Keys.Enter Then
    If val(StrToNarrow(e.Sender.Text)) > val(e.Form.Controls("textbox2").text) Then
        MessageBox.show("请注意,你输入值大于了设定值","提示",MessageBoxButtons.OK)
        e.Sender.Select
        e.Sender.Text = ""
    Else
        If e.sender.text = ""
            e.sender.value = "0"
        End If
        e.sender.WriteValue '放在这个位置试试
        e.Sender.Select
        If Tables("小学统分(改)_table1").Position < Tables("小学统分(改)_table1").Rows.Count-1 Then
            Tables("小学统分(改)_table1").Position += 1
        Else
            messagebox.show("已到最后一个了")
        End If
    End If
    DataTables("成绩").Save()
    e.Cancel = True
End If


这个可以了,但  e.Sender.Select 不能选中文本,如某行有个数25,要想换行是文件框内的25被选中,这样如果要改直接输入,但现在是光标在25的前面,如果输入24就成了2425,这样不方便,请问怎么实现选中

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


加好友 发短信
等级:超级版主 帖子:106178 积分:540007 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/1/6 22:51:00 [只看该作者]

        e.Sender.Select
        e.Sender.SelectionStart = e.Sender.text.length

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


加好友 发短信
等级:八尾狐 帖子:1936 积分:14844 威望:0 精华:0 注册:2016/4/28 9:58:00
  发帖心情 Post By:2020/1/7 7:23:00 [只看该作者]

SelectionStart不是NumericComboBox成员

 回到顶部
总数 13 1 2 下一页