Hi,

I have a problem when selecting values from some combo boxes.

I have a form with two combo boxes next to each other, they both have the same data source, which is an array. I need to be able to select different values in each combo box.

My problem is that when the user selects a value from either combo box, it sets the other combo box to the same value. So the values in the combo boxes are always the same as each other, I can't make one different from the other unless I type in one of them.

I don't have any events coded for these combo boxes, so it seems to be something with .NET.

I've tried moving the combo boxes away from each other, putting then on different panels and group boxes and nothing has worked.

Any help would be appreciated

Thanks

Recommended Answers

All 5 Replies

The only way I've found around this problem, is to create two arrays, one for each combo box, that store the same stuff. This is what my code that doesn't work looks like:

Dim dose() As String = {"1/2", "1", "1 & 1/2", "2", "2 & 1/2", "3", "4", "5", "6", "1/2 ml", "1 & 1/2 ml", "2 ml", "2 & 1/2 ml", "3 ml", "4 ml", "5 ml", "10 ml", "15 ml"}
cboMedDose.DataSource = dose
cboPatDose.DataSource = dose

This is the code that works where I create another array:

    Dim dose() As String = {"1/2", "1", "1 & 1/2", "2", "2 & 1/2", "3", "4", "5", "6", "1/2 ml", "1 & 1/2 ml", "2 ml", "2 & 1/2 ml", "3 ml", "4 ml", "5 ml", "10 ml", "15 ml"}
    cboMedDose.DataSource = dose
    Dim somethingElse() As String = {"1/2", "1", "1 & 1/2", "2", "2 & 1/2", "3", "4", "5", "6", "1/2 ml", "1 & 1/2 ml", "2 ml", "2 & 1/2 ml", "3 ml", "4 ml", "5 ml", "10 ml", "15 ml"}
    cboPatDose.DataSource = somethingElse

I tried this as well, and it didn't work:

    Dim dose() As String = {"1/2", "1", "1 & 1/2", "2", "2 & 1/2", "3", "4", "5", "6", "1/2 ml", "1 & 1/2 ml", "2 ml", "2 & 1/2 ml", "3 ml", "4 ml", "5 ml", "10 ml", "15 ml"}
    cboMedDose.DataSource = dose
    Dim somethingElse() As String = dose
    cboPatDose.DataSource = somethingElse

If anyone could think of a better solution I'd really appreciate it.

Thanks
Cristy

Dim SomethingElse() as String = dose

doesn't work because both variables still reference the same array instance. Use the array's Clone method to create the second copy for you.

Dim dose() As String = {"1/2", "1", "1 & 1/2", "2", "2 & 1/2", "3", "4", "5", "6", "1/2 ml", "1 & 1/2 ml", "2 ml", "2 & 1/2 ml", "3 ml", "4 ml", "5 ml", "10 ml", "15 ml"}
Dim SomethingElse() as String = dose.Clone

cboMedDose.DataSource = dose
cboPatDose.DataSource = SomethingElse

The only way I've found around this problem, is to create two arrays, one for each combo box, that store the same stuff. This is what my code that doesn't work looks like:

This is the code that works where I create another array:

I tried this as well, and it didn't work:

If anyone could think of a better solution I'd really appreciate it.

Thanks
Cristy

I always feel shorter is better so just add .clone onto your dose

Dim dose() As String = {"1/2", "1", "1 & 1/2", "2", "2 & 1/2", "3", "4", "5", "6", "1/2 ml", "1 & 1/2 ml", "2 ml", "2 & 1/2 ml", "3 ml", "4 ml", "5 ml", "10 ml", "15 ml"}
cboMedDose.DataSource = dose.Clone
cboPatDose.DataSource = dose.Clone

I always feel shorter is better so just add .clone onto your dose

Dim dose() As String = {"1/2", "1", "1 & 1/2", "2", "2 & 1/2", "3", "4", "5", "6", "1/2 ml", "1 & 1/2 ml", "2 ml", "2 & 1/2 ml", "3 ml", "4 ml", "5 ml", "10 ml", "15 ml"}
cboMedDose.DataSource = dose.Clone
cboPatDose.DataSource = dose.Clone

Try disabling databinding on the dose object
eg
Me.BindingContext.Item(dose).SuspendBinding()

where Me is the form. This lets you use the one source for your combo box. Ofcourse you will need to manually make any changes in response the SelectedValue/ Index chnage events on the combo boxes

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.