Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 使用对话框的结果更新另一窗体上的控件_Vb.net_Winforms_Combobox_Jet_Bindingsource - Fatal编程技术网

Vb.net 使用对话框的结果更新另一窗体上的控件

Vb.net 使用对话框的结果更新另一窗体上的控件,vb.net,winforms,combobox,jet,bindingsource,Vb.net,Winforms,Combobox,Jet,Bindingsource,我制作了一个windows窗体,其中包含一个列表框(名为VenueList)。listbox从绑定源VenuesBindingSource提供的列表中提取其值,该绑定源为值引入ID,为文本引入名称 有一个按钮导致出现一个对话框,该对话框要求在数据库中存储新场地的值。填充值并插入数据库后,对话框将关闭并返回到调用它的原始表单 但是,不是更新列表。名单保持不变。但是如果您关闭表单并重新打开它,您会看到添加了一个新值 TournamentSettings.VenuesTableAdapter.

我制作了一个windows窗体,其中包含一个列表框(名为
VenueList
)。listbox从绑定源
VenuesBindingSource
提供的列表中提取其值,该绑定源为值引入ID,为文本引入名称

有一个按钮导致出现一个对话框,该对话框要求在数据库中存储新场地的值。填充值并插入数据库后,对话框将关闭并返回到调用它的原始表单

但是,不是更新列表。名单保持不变。但是如果您关闭表单并重新打开它,您会看到添加了一个新值

    TournamentSettings.VenuesTableAdapter.InsertVenueQuery(Trim(VenueNameTxt.Text), Trim(VenueAddress1Txt.Text), Trim(VenueAddress2Txt.Text), Trim(VenueCityTxt.Text), Trim(VenueProvinceTxt.Text), Trim(VenueZipTxt.Text), Trim(CountryBox.SelectedValue), Trim(VenuePhoneNo.Text), VenueType.SelectedText, VenueWebAddress)
    TournamentSettings.VenuesTableAdapter.Fill(TournamentSettings.VenueNameList.Venues)
  • 在上面的代码中,
    InsertVenueQuery
    是来自设计器的查询的名称,该查询被调用以将值添加到tableadapter
    venuestableapter
    中,该表用于在加载时填充组合框。我还发送了
    Fill
    命令,用新值重新填充表格

所以问题是,我是否应该用另一种方式来做这件事,而不是向表适配器提供数据并向数据表发送fill命令?或者是我在这里没有做的事情,我应该把这个值强制加入列表。我很想在设计器之外重做所有事情,但这需要大量代码,因为我必须运行两个命令(一个用于插入数据,另一个用于获取@@IDENTITY值,因为这是在access数据库上运行的。)

好的。这件事我想了一会儿

我没有创建加载时完成的事件块,而是创建了一个名为“FillVenueList”的子函数

我使用了以下代码块:

Public Sub FillVenueList()
    ' Adding values from database to a datatable.
    ' From there will add to the list box. 
    Dim VenueConnection As New OleDb.OleDbConnection(DBconnection)
    VenueConnection.Open()
    Dim VenueConnectionQuery As New OleDb.OleDbCommand("SELECT VenueID, VenueName FROM Venues", VenueConnection)
    Dim VenueDataAdapter As New OleDb.OleDbDataAdapter(VenueConnectionQuery)
    Dim VenueDataSet As New DataSet
    VenueDataAdapter.Fill(VenueDataSet, "Venues")

    TrnVenueLst.DataSource = VenueDataSet.Tables("Venues")
    TrnVenueLst.DisplayMember = "VenueName"
    TrnVenueLst.ValueMember = "VenueID"
    VenueConnection.Close()
End Sub

从那里,我在表单和添加地点窗口上调用了这个sub,我可以安全地看到它是有效的。这就是在表单上获取新值的方式,不要将其用作加载事件的一部分,而是从加载事件块调用它,然后在要添加到列表时调用它。

这是Windows窗体、Web窗体、WPF还是什么?这是Windows窗体。(我想我已经在问题中提到了。)