【问题标题】:Overwriting previous combobox selection?覆盖以前的组合框选择?
【发布时间】:2016-12-23 13:53:13
【问题描述】:

我的表单中目前有两个 ComboBox。 ComboBox A 用于选择某个项目。 ComboBox B 将填充 4 个特定于 ComboBox A 中所做选择的项目。我能够让所有这些工作。

我的问题是:如果我在 ComboBox A 中进行选择,ComboBox B 将填充特定于我在 ComboBox A 中所做选择的 4 个项目。但是如果我在 ComboBox A 中进行另一个选择,这些项目不会覆盖在 ComboBox B 中填充的先前项目,它们只是添加到已填充的项目中。

我的问题是,当在 ComboBox A 中进行新选择时,是否会覆盖 ComboBox B 中的先前项目?

Imports MySql.Data.MySqlClient
Public Class Form2
Dim MySqlConn As MySqlConnection
Dim COMMAND As MySqlCommand
Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    MySqlConn = New MySqlConnection
    MySqlConn.ConnectionString = "server=localhost;userid=root;password=root;database=test"
    Dim READER As MySqlDataReader
    Try
        MySqlConn.Open()
        Dim Query As String
        Query = "select * from test.boxinformation"
        COMMAND = New MySqlCommand(Query, MySqlConn)
        READER = COMMAND.ExecuteReader
        While READER.Read
            Dim boxSN = READER.GetString("Box_SN")
            ComboBox_Box.Items.Add(boxSN)
        End While
        MySqlConn.Close()
    Catch ex As MySqlException
        MessageBox.Show(ex.Message)
    Finally
        MySqlConn.Dispose()
    End Try
End Sub
Private Sub ComboBox_STSBox_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox_Box.SelectedIndexChanged
    MySqlConn = New MySqlConnection
    MySqlConn.ConnectionString = "server=localhost;userid=root;password=root;database=test"
    Dim READER As MySqlDataReader
    Try
        MySqlConn.Open()
        Dim Query As String
        Query = "select * from test.boxinformation where Box_SN='" & ComboBox_Box.Text & "'"
        COMMAND = New MySqlCommand(Query, MySqlConn)
        READER = COMMAND.ExecuteReader
        While READER.Read
            ComboBox_Port.Items.Add(READER.GetString("1_IP"))
            ComboBox_Port.Items.Add(READER.GetString("2_IP"))
            ComboBox_Port.Items.Add(READER.GetString("3_IP"))
            ComboBox_Port.Items.Add(READER.GetString("4_IP"))
        End While
        MySqlConn.Close()
    Catch ex As MySqlException
        MessageBox.Show(ex.Message)
    Finally
        MySqlConn.Dispose()
    End Try
End Sub

结束类

【问题讨论】:

  • 是的,请上传您的代码,以便我们在您自己的代码中进行修改
  • 由于您很可能正在使用 User_Form ComboBox ,因此您需要在每次添加新项目之前清除它。在 User_Form 模块中使用 Me.ComboBox1.Clear
  • 我上传了我的代码,你能告诉我这将如何实现吗?非常感谢。
  • 见下面我的帖子(在哪里添加行)

标签: vb.net winforms visual-studio combobox


【解决方案1】:

为了从以前的值中删除你的 ComboBox 使用 ComboBox_Port.Clear ,把它放在你的行之后

READER = COMMAND.ExecuteReader

所以你的代码将是:

READER = COMMAND.ExecuteReader
' *** drop your new line here ***
ComboBox_Port.Clear
While READER.Read
    ComboBox_Port.Items.Add(READER.GetString("1_IP"))
    ComboBox_Port.Items.Add(READER.GetString("2_IP"))
    ComboBox_Port.Items.Add(READER.GetString("3_IP"))
    ComboBox_Port.Items.Add(READER.GetString("4_IP"))
End While

【讨论】:

  • 我在添加该行时遇到错误,它显示“'Clear' 不是'ComboBox' 的成员。”
  • 没关系,我明白了.. 我必须添加行“ComboBox_Port.Items.Clear”,谢谢你的帮助!!
  • 不客气,如果我的回答解决了你的问题,那么标记为答案
【解决方案2】:

如果您添加新项目而不首先删除旧项目,那么这将是预期的行为。要在添加新集合之前从组合框中删除所有项目,您需要像这样清除其 objectCollection;

ComboBoxA.ObjectCollection.Clear()
'now add your new set of items...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-06
    • 2019-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多