以文本方式查看主题 - Foxtable(狐表) (http://www.foxtable.com/bbs/index.asp) -- 专家坐堂 (http://www.foxtable.com/bbs/list.asp?boardid=2) ---- keydown事件问题 (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=145052) |
-- 作者:刘林 -- 发布时间:2020/1/6 20:08:00 -- keydown事件问题 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,因为表中不为零算平均时好像是不算,这样能在零的情况下不输入,原来都可以,现在不得行了呢,哪里有问题?
|
-- 作者:有点蓝 -- 发布时间:2020/1/6 20:19:00 -- 换个位置 …… End If End If e.sender.WriteValue e.Cancel = True End If |
-- 作者:刘林 -- 发布时间:2020/1/6 20:23:00 -- 还是不行,并且这样输入什么数据都不能输入到表了 [此贴子已经被作者于2020/1/6 20:24:24编辑过]
|
-- 作者:刘林 -- 发布时间: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,但我需要回车后自动换行,怎么办?
|
-- 作者:有点蓝 -- 发布时间:2020/1/6 20:47:00 -- 我测试是可以的。上传具体实例说明。 |
-- 作者:刘林 -- 发布时间: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 老师,终于发现,当加上红色的代码,选定其他控件,然后再回到当前输入框就可以,如直直接用蓝色代码就不得行,请问是什么原因,怎么改进呢,我觉得这样写有点别扭
|
-- 作者:有点蓝 -- 发布时间: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
|
-- 作者:刘林 -- 发布时间: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,这样不方便,请问怎么实现选中
|
-- 作者:有点蓝 -- 发布时间:2020/1/6 22:51:00 -- e.Sender.Select e.Sender.SelectionStart = e.Sender.text.length
|
-- 作者:刘林 -- 发布时间:2020/1/7 7:23:00 -- SelectionStart不是NumericComboBox成员 |