Private Sub client_name_Leave(sender As Object, e As EventArgs) Handles client_name.Leave
If client_name.Text = "" Then
TextBox2.Focus()
Else
Dim dr3 As SQLiteDataReader
Try
cmd = New SQLiteCommand("select * from client where name='" & client_name.Text & "' ", cn)
cn.Close()
cn.Open()
dr3 = cmd.ExecuteReader()
If dr3.HasRows = False Then
'client_name.Focus()
client_master.c1.Text = client_name.Text
dr3.Close()
Home.Panel1.Visible = False
client_master.MdiParent = Me.MdiParent
If client_master.WindowState = FormWindowState.Minimized Then
client_master.WindowState = FormWindowState.Normal
End If
client_master.Show()
client_master.BringToFront()
End If
dr3.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try
cn.Close()
Exit Sub
End If
End Sub
这是我的代码,然后我离开client_name组合框,如果输入的值在数据库中不可用,则打开client_master表单输入新的客户端详细信息,但在我输入新的客户端详细信息后,client_name组合框不显示最新输入的值而不重新启动表单,我如何在不重新启动表单的情况下获得最新输入的值。
1条答案
按热度按时间at0kjp5o1#
您可以在ComboBox.DropDown事件中更新
client_name
ComboBox的内容。这将在每次打开ComboBox时更新客户端列表,因此客户端列表将始终是最新的。根据表中有多少客户记录,这可能需要一些时间并影响用户体验,因此,尽管这可以确保列表是最新的,但在我看来这是矫枉过正的。一个更好的选择是在
client_master
表单完成添加新客户端信息时更新ComboBox。您可以在此时引发一个事件并处理该事件以更新ComboBox。另一个更简单的解决方案是,一旦检测到它是一个新的客户端(在
If dr3.HasRows = False
块中),立即将客户端名称添加到ComboBox中:但这样做也有一些缺点:
1.客户端名称将位于列表的底部。根据组合框最初的填充方式,名称可能不在列表中的预期位置。例如,如果ComboBox是按字母顺序填充的名称,那么客户端可能不在正确的位置。当然,您可以使用client_name.Items.Insert将其插入正确的位置
1.在
client_master
表格中输入客户信息的过程中,客户名称可能已被修改,这些修改不会反映在项目中。