954,535 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

Combo box selection problem

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

hippychic43
Newbie Poster
14 posts since Mar 2005
Reputation Points: 10
Solved Threads: 0
 

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

hippychic43
Newbie Poster
14 posts since Mar 2005
Reputation Points: 10
Solved Threads: 0
 

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
JCinSB
Newbie Poster
1 post since Jun 2006
Reputation Points: 10
Solved Threads: 0
 

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
waynespangler
Posting Pro in Training
461 posts since Dec 2002
Reputation Points: 84
Solved Threads: 58
 

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

outside404
Newbie Poster
1 post since Nov 2006
Reputation Points: 10
Solved Threads: 0
 

never mind.

waynespangler
Posting Pro in Training
461 posts since Dec 2002
Reputation Points: 84
Solved Threads: 58
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You