ComboBox's SelectedIndex Property problem

E

Eric A. Johnson

Hi Everyone,

I am at my wit's end here. I have a combobox (combyQueryTitle) that I
need to use in order to select a query for my database project. Therefore,
I am using the comboQueryTitle_SelectedIndexChanged handler to, when a new
selection is made, update the query and refresh the display. The only
problem is that the program seems to inexplicably start with the
..selectedindex property at -1! This makes no sense to me. Furthermore,
this is, apparently, happening *before* my form loads, as not only does the
form not appear on screen, but even when I put a breakpoint at the first
possible line within the form_load handler, it still crashes; the breakpoint
is never even reached. Is there a way to locate the point at which the
property is being changed to (or created with) the value of -1? It seems to
me that it should not happen at all.
Please respond here, if possible; if you need more info, you can reach
me via AIM at ajeric74. Thank you!

-- Eric
 
Q

Qwert

Me.cmbComboBox= New System.Windows.Forms.ComboBox()
Then cmbComboBox.SelectedIndex is -1 (default value)

You get an error if you would try this:
Me.cmbComboBox= New System.Windows.Forms.ComboBox()
cmbComboBox.SelectedIndex = 0

Can't you exit event _SelectedIndexChanged when the index is invalid?

With cmbComboBox
If .SelectedIndex < 0 Or .SelectedIndex >= .Items.Count Then
Exit Sub
End If
End With
 
B

Boo K.M.

Qwert said:
Me.cmbComboBox= New System.Windows.Forms.ComboBox()
Then cmbComboBox.SelectedIndex is -1 (default value)

You get an error if you would try this:
Me.cmbComboBox= New System.Windows.Forms.ComboBox()
cmbComboBox.SelectedIndex = 0

Can't you exit event _SelectedIndexChanged when the index is invalid?

With cmbComboBox
If .SelectedIndex < 0 Or .SelectedIndex >= .Items.Count Then
Exit Sub
End If
End With

I would like to ask for a side question.
If that is -1 (by default), how do I set the combo text when there is no
selection? Something like web pages "(Please choose a category from
list)"...

That will help a lot. TIA.

Boo K.M.
 
E

ECathell

Better form would be

If not me.cmbComboBox.selectedindex=-1 then
'do something
end if

put that inside your handler....
 
E

ECathell

Hard code that as your first selection. Then when you bind the datasource it
should fill in under that selection.

-1 means the control is initializing or is stateless(I think I read that on
MSDN) Once the form is loaded the default index=0

combo box's can be a pain....
 
E

Eric A. Johnson

Okay, I have another question: What I'm trying to do is to use an ordinary
combobox to hold the query title, and an invisible combobox to hold the
actual query. I want to make it so that the invisible combobox will change
to match the visible one, thereby allowing its .text property to contain the
proper query. Is that possible?

TIA,
Eric
 
E

Eric A. Johnson

As a matter of fact, is it possible to get the text associated with an index
within the combobox without actually modifying the .selectedindex property?
It is extremely annoying, trying to change within the program code the
selected index, only to have it crash because... I don't even know why. I
can't understand why it won't allow me to change the selected index! The
tooltip in VB.NET tells me that the .selectedindex method allows me to get
or set the index that is selected. Maybe if someone can point me to a
detailed explanation of this idiotic behavior and how to work around it? I
just want the invisible combobox's index to be the same as the visible one.
My AIM name is ajeric74... SOMEBODY please come online to help me!!!

-- Eric
 
E

Eric A. Johnson

Hi Boo,

Another member has helped me to arrive at the ideal solution! Inside of
the VB-generated code routine is a major part that initializes all of the
controls. I simply create a global Boolean variable, comboLoaded, and set
it originally to False. At the end of the routine, I set it to true.
Within the _SelectedIndexChanged routine, I make it so that the majority of
the code only runs if comboLoaded is true. Simplicity itself, and it works
like a charm!

Hope this helps,
Eric
 
E

ECathell

I think you actually want to use .text value. Actually you can databind the
same combobox to 2 different datasources. So if you have a table that has
the query name, query you could do something like this

cbo.datasource=table
cbo.diplaymember=column0name
cbo.databinding.add(new binding("text",table,"column0name)
cbo.databinding.add(new binding("valuemember",table,"column1name)

then you would be able to get the querystring off the .selectedvalue
property.

Play around with it some, I ALWAYS have to tinker with my comboboxes because
it always seems each situation needs a different approach. Combos are a
pain...but thats because they are very powerful.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top