我最近才开始摆弄Visual Basic Express和Sql数据库。
我设法启动并运行数据库,并可以从中查询信息。我甚至创建了一个表单,可以使用。
向表中添加新条目第一个表单有一个ComboBox,列出了我表中的PlayerNames。 Form2允许您向表中添加新名称,但我添加的任何内容都不会立即在Form1中更新。我必须重新启动程序才能看到新条目。即便如此,这些新条目似乎并不是永久性的,因为它们最终会消失。
我对Form1的代码:
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim db = New PlayerTestDataContextDataContext()
Dim PlayerList = From List In db.Players
Select List.PlayerName
For Each PName In PlayerList
cbPList.Items.Add(PName)
Next
End Sub
Private Sub btnCreate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCreate.Click
frmNewPlayer.Show()
End Sub
结束班
Form2的代码:
Private Sub btnCPlayer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCPlayer.Click
Dim db = New PlayerTestDataContextDataContext()
If txtNewPlayer.Text = "" Then
lbWarning.Text = "Please enter a name!"
Else
Dim Plyr As New Player With {
.PlayerName = txtNewPlayer.Text}
db.Players.InsertOnSubmit(Plyr)
db.SubmitChanges()
Me.Close()
End If
End Sub
不确定这里出了什么问题...感谢任何帮助。如果我忽略了一个明显的答案,原谅我,我不知道我需要寻找什么。
答案 0 :(得分:1)
Private Sub btnCreate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCreate.Click
if frmNewPlayer.ShowDailog() == DialogResult.Ok
Dim db = New PlayerTestDataContextDataContext()
Dim PlayerList =
From List In db.Players
Select List.PlayerName
'
cbpList.Items.Clear()
'
For Each PName In PlayerList
cbPList.Items.Add(PName)
Next
end if
End Sub
答案 1 :(得分:0)
你永远不会告诉Form1更新它的列表。
现在正在发生这种情况:
此时,您完成了操作流程,但Form1从未被告知已添加新的播放器。也没有任何代码可以使列表重新加载,除非Form1启动时(Form_Load事件/方法仅在第一次加载时调用)。
你需要(选择一个):
模态方法最简单。