自定义录入界面之四
本节的内容可以参考CaseStudy目录下的文件:自定义录入界面之四.Table
前面的自定义录入界面都是针对表的,这次针对窗口,可以在下拉输入框中输入内容进行模糊筛选,找出可能的客户供选择, 还可以直接在下拉窗口中增加或删除用户:
设计步骤
一、设计下拉窗口
1、首先在订单表新增一个窗口,名称为“窗口1”,窗口类型为"DropDownForm",窗口插入一个Table控件,Table控件的“作为副本”属性设置为True,“允许编辑”属性设置为False,并绑定到客户表。
2、将窗口的DropDownOpened事件代码设置为:
Dim
txt As String = e.Form.DropDownBox.Text这样下拉窗口显示后,会自动根据下拉列表框的内容,筛选出可能的客户,并将输入焦点返回到下拉列表框(这是很关键的一步)。
3、将Table控件的DoubleClick事件代码设置为:
Forms(
"窗口1").DropDownBox.CloseDropDown()这样在下拉窗口双击某个客户,就会关闭下拉窗口。
4、将Table控件的KeyDown事件代码设置为:
If
e.KeyCode = Keys.Enter Then这样在下拉窗口中选择某个客户,然后按回车键,也会关闭下拉窗口。
5、将窗口的DropDownClosed事件代码设置为:
If
e.Selected
Then '如果选择了值
Dim tbl
As Table =
Tables("窗口1_Table1")
If tbl.Current
IsNot Nothing
Then
e.Form.DropDownBox.Value
= tbl.Current("客户ID")
End If
If e.Form.DropTable
IsNot Nothing
Then '如果是通过表下拉的
e.Form.DropTable.FinishEditing()
Else
'如果是通过窗口下拉的
e.Form.DropDownBox.WriteValue()
End If
End
If
这样关闭下拉窗口后,可以自动将选定客户的客户ID输入到下拉列表框中。
6、将窗口的“增加客户”按钮的Click事件代码为:
e.Form.DropDownBox.CloseDropdown(
False)
这样单击“增加用户”按钮,可以增加一个用户,并打开“客户编辑”窗口编辑新增客户的资料,编辑完成后,会自动将新增客户的客户ID写入下拉列表中。
请使用上述代码之前,先在客户表建立一个“客户编辑”窗口,此窗口的设计就不再啰嗦了,记得将这个窗口的类型设置为模式窗口就行。
需要注意的是,上面的代码CloseDropDown方法使用了参数False,这样关闭下拉窗口后,DropdownClosed事件的e参数Selected等于False,这样就只是简单地关闭窗口,不会向下拉列表框写入值。
7、将窗口的“删除用户”按钮的Click事件代码设置为:
Dim
r As Row = Tables("窗口1_Table1").Current二、设计录入窗口
1、新建一个录入窗口,插入一个DropDownBox控件,将其下拉窗口设置为“窗口1”。
2、将DropDownBox的KeyPress事件代码设置为:
Dim
drp As WinForm.DropDownBox = e.Sender这样一旦开始在下拉列表框中输入内容,就能自动打开打开下拉窗口。
3、将DropDownBox的TextChanged事件代码设置为:
Dim
drp As WinForm.DropDownBox = e.sender这样就能根据用户在下拉列表框输入的内容,动态筛选出可能的客户。
4、将DropDownBox的KeyDown事件代码设置为:
Dim
drp As WinForm.DropDownBox = e.sender这样用户在下拉列表框输入内容的同时,还可以通过上下箭头按键来选择客户。
5、将DropDownBox的Validating事件代码设置为:
Dim
drp As
WinForm.DropDownBox
= e.sender
If
drp.DroppedDown
Then '如果下拉窗口已经打开
drp.CloseDropdown(False)
'关闭下拉窗口
End
If
这样就能确保输入焦点离开DropDownBox后,下拉窗口能自动关闭。