将文本框中的文本输入组合框 vb.net

问题描述 投票:0回答:5

我有两种形式,A和B。

FORM A
用户将从
combobox
中选择一个国家代码,然后将其保存到数据库中。

On

FORM B
a
textbox
显示先前保存到数据库中的国家代码。

我想在选择

FORM B
时更改
edit
中的国家代码。

如何改变: 1.首先隐藏文本框 2. 将显示一个包含所有国家代码的组合框,所选值等于隐藏文本框的值。

我试过将信息放入组合框,就像数据库空白时直接从文本框一样,例如:

cbCountryCode.Text = CStr(dataTable.Rows(0).Item(2))

但这不起作用。我还需要将国家代码保留在组合框中,因为如果国家代码错误,用户将需要更改国家代码。有没有办法做到这一点?我有一个解决方法,如果组合框为空,我不让用户更新信息,但我希望国家代码已经存在,这样用户就不必再次选择国家代码,如果它没有错的话.对此问题的任何帮助将不胜感激。

编辑:

datatable.Rows(0).Item(2) 持有国家代码,例如,

Ireland (+353), United Kingdom (+44) or U.S.A. (1)
。 这是我从数据库中调用信息的代码:

sqlVisitorDetails = "SELECT * FROM visitorDetails WHERE idNumber=@idNumber"

sqlCon.Open()
sqlCmd = New SqlCommand(sqlVisitorDetails, sqlCon)
sqlCmd.Parameters.AddWithValue("@idNumber", txtIdNumber.Text)

dtVisitorDetails = loadDtVisitorDetails()

txtFirstName.Text = CStr(dtVisitorDetails.Rows(0).Item(1))
txtLastName.Text = CStr(dtVisitorDetails.Rows(0).Item(2))
txtContactNumber.Text = CStr(dtVisitorDetails.Rows(0).Item(3))
txtCountryCode.Text = CStr(dtVisitorDetails.Rows(0).Item(4))
txtAddress.Text = CStr(dtVisitorDetails.Rows(0).Item(5))

国家代码(例如“爱尔兰(+353)”)存储在 dtVisitorDetails.Rows(0).Item(4) 中,并将其放入文本框 txtCountryCode 中。 当在表单上单击编辑时,文本框 txtCountryCode 隐藏,组合框 cbCountryCode 可见(在单击编辑之前,显示 txtCountryCode 并隐藏 cbCountryCode)。然后我希望国家代码(在本例中为“爱尔兰 (+353)”)显示在 cbCountryCode 组合框中。在显示组合框的那一刻,它是空白的,用户必须再次选择国家代码,即使它是正确的。我希望这能让事情更清楚。

sql-server vb.net winforms combobox textbox
5个回答
0
投票

从你的问题中我能理解的最好的。

cbCountryCode.Text = CStr(dataTable.Rows(0).Item(2))
如果属性中的

DropDownStyle

设置为
DropDownList
将不起作用,将其更改为
DropDown
(如果不是)。

对此:

I also need to keep the country codes in the combobox as the user will need to change the country code if it's wrong.

您必须将数据绑定到 ComboBox 才能使其工作。

编辑: 如果可能,请使用

ColumnName
而不是
Index
从数据表中获取数据。由于您正在从数据库中选择所有记录,因此您可能不知道索引何时会更改(当从数据库中添加或删除列时)

cbCountryCode.Text = CStr(dataTable.Rows(0).Item("CountryCodeColumn"))

0
投票

怎么样?

cbCountryCode.ClearSelection()

cbCountryCode.SelectedIndex = cbCountryCode.Items.IndexOf(cbCountryCode.Items.FindByText(datatable.Rows(0).Item(2).ToString))

0
投票

试试这个;

cbCountryCode.SelectedItem = CStr(dataTable.Rows(0).Item(2))

.Text
属性是combo中当前选中的文本,不是当前选中的item。

编辑:(第 3 版!)

这绝对有效!创建一个新项目,新建一个WinForms项目和Form1等。添加一个按钮(btnTest)和一个组合框(cboTest)并将这段代码粘贴到;

Private Sub Form1_Load() Handles MyBase.Load

    ' Add some items
    cboTest.Items.Add("U.S.A (+1)")
    cboTest.Items.Add("Ireland (+353)")
    cboTest.Items.Add("U.K. (+44)")

    ' Select the first item
    cboTest.SelectedIndex = 0

End Sub

Private Sub btnTest_Click() Handles btnTest.Click
    ' Select the UK entry
    cboTest.SelectedIndex = cboTest.FindString("U.K.")
End Sub

我不想这么说,但它就像一个魅力!我已经将组合框设置为

DropDown
DropDownList
进行了测试,结果是一样的。请检查您是否有正确的数据从您正在使用的数据表/行/项目进出您的例程!


0
投票

您可以简单地在组合框属性中执行此操作 - 更改这两个字段: Here is how you add items in Combo Box via Text Field


-1
投票

尝试简单:

comboBox.Items.Add("Item 1");

© www.soinside.com 2019 - 2024. All rights reserved.