设置SelectedIndex

时间:2019-07-01 21:11:01

标签: .net vb.net combobox

我试图设置ComboBox的SelectedIndex值,当我这样做时,ComboBox中的文本将被清除。例如:我有一个DataGridView,当用户单击一行时,它会填充ComboBox。如果用户单击具有相同值的另一行,它将清除ComboBox的值,但仍保留所选索引。但是,如果用户单击具有不同值的行,它将正确更改。

我尝试将填充组合框的方式从设置其数据源更改为遍历其数据并手动设置每个值。我还尝试设置ComboBox1.SelectedIndex = 2,它仍然可以清除文本。

这是我在DataGridView1的Click事件中设置SelectedIndex的方法:

effectiveMonth = DateTime.ParseExact(DataGridView1.SelectedRows(0).Cells.Item("Effective_Month").Value, "MMMM", CultureInfo.InvariantCulture).Month
ComboBox1.SelectedIndex = effectiveMonth - 1

这是我填充组合框的方式:

Dim months as New Dictionary(Of Integer, String) FROM {{1, "1-January"}, {2, "February"}, 
{3, "March"}}

ComboBox1.DataSource = months.ToList
ComboBox1.DisplayMember = "Value"
ComboBox1.ValueMemeber = "Key"

我希望发生的是当用户单击具有相同值的另一行时ComboBox1的值保持显示。

1 个答案:

答案 0 :(得分:0)

SelectedIndex设置为-1将清除组合框,而没有任何选定项。如果effectiveMonth始终为0,那么您将获得描述的行为。我不能完全确定,因为没有显示足够的代码。