我有两种形式,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 组合框中。在显示组合框的那一刻,它是空白的,用户必须再次选择国家代码,即使它是正确的。我希望这能让事情更清楚。
从你的问题中我能理解的最好的。
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"))
怎么样?
cbCountryCode.ClearSelection()
cbCountryCode.SelectedIndex = cbCountryCode.Items.IndexOf(cbCountryCode.Items.FindByText(datatable.Rows(0).Item(2).ToString))
试试这个;
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
进行了测试,结果是一样的。请检查您是否有正确的数据从您正在使用的数据表/行/项目进出您的例程!
尝试简单:
comboBox.Items.Add("Item 1");