在文本框中输入文本到组合框vb.net

时间:2014-08-12 11:27:48

标签: sql-server vb.net winforms combobox textbox

我有两种形式,A和B.

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

FORM B上,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))

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

4 个答案:

答案 0 :(得分:0)

试试这个;

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

.Text属性是组合中当前选定的文本,而不是当前选定的项目。

编辑:(第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 AND DropDownList进行测试,结果相同。请检查您正在使用的dataTable / Row / Item中是否有正确的数据进入和退出您的例程!!

答案 1 :(得分:0)

那怎么样?

cbCountryCode.ClearSelection()

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

答案 2 :(得分: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从数据表中获取数据。由于您从数据库中选择了所有记录,因此您可能不知道索引何时会更改(当从DB添加或删除列时)

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

答案 3 :(得分:-1)

尝试简单:

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