我最近才开始摆弄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
不知道这里出了什么问题…任何帮助都是感激的。如果我在这里忽略了一个明显的答案,请原谅我,我不确定我需要寻找什么。
应该可以了。但是你需要做一些阅读…
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
你从来没有真正告诉Form1更新它的列表。
这是现在发生的事情:
- Form1_Load
- 填充玩家列表
- 用户按btnCreate (btnCreate_Click)。
- btnCreate启动frmNewPlayer(我假设是"Form2")。
- 用户按btnCPlayer (btnCPlayer_Click)。
- btnCPlayer将播放器插入列表。
- btnCPlayer关闭Form2.
你需要(选一个):
- 启动Form2作为一个"模式"窗口,这意味着它阻止Form1做任何事情,直到它被关闭。这将允许你在Form2关闭后检查是否有更新。
- Form2通知Form1它已经添加了一个播放器("事件")的方法。
- 设置刷新列表(可能使用"定时器")。
模态方法是最简单的