ComboBox SelectedIndexChanged event: how to get the previously selected index?
Solution 1
There is nothing built in, you will need to listen for this event and keep track in an instance variable.
Use -1 as an uninitialized "last index", so on first pass you set it but don't use it. Subsequent passes you use it and set it.
You could always do this using a derived ComboBox class of your own and override OnSelectedIndexChanged
and expose a PreviousSelectedIndex
property. This way, it wouldn't be tightly coupled to the form. Alternatively, as you can do this using events, its also eligible for implementation as an extender provider.
Solution 2
I guess you will have to store the current (that will become the previous later on) into a variable so that it is used like a cache or something like so.
private void cboTargetMode_SelectedIndexChanged(object sender, EventArgs e) {
// need to get the previously selected index and do some handling here...
// ... some handler code here ...
// Assuming that the variable PreviousSelectedIndex is declared in the class with value -1.
if (PreviousSelectedIndex < 0)
PreviousSelectedIndex = cbo.TargetMode.SelectedIndex;
else
// Do some handling here...
switch (cboTargetMode.SelectedIndex) {
case 1: // ..... some code here...
break;
case 2: // ..... some code here...
break;
case 3: // ..... some code here...
break;
default: // ..... some code here...
break;
}
}
Is this something you have already thought of?
Otherwise, perhaps working with the Control.Validating
event? I just can't say whether this event occurs before or after the SelectedIndexChanged
event. =(
code4life
currently involved in everything related to: Angular 6, RxJs 6, Electron, NodeJs Express (ugh), Python (flask, restplus, pandas, hurray), Excel-DNA, Web API, .NET Core, FinCAD. historically, usually found myself doing everything related to c#, including sharepoint, biztalk, infopath, vsto (excel, word), asp.net, winforms, wpf, wcf, sql, xml/xsd/xslt, serialization. pretty much immersed in financial industry, hedge funds these days.
Updated on July 09, 2022Comments
-
code4life almost 2 years
I have a user control which has a ComboBox and a SelectedIndexChanged event handler. In the event handler, I need to be able to tell what was the previously selected index... can anyone point me in the right direction?
private void cboTargetMode_SelectedIndexChanged(object sender, EventArgs e) { // need to get the previously selected index and do some handling here... // ... some handler code here ... switch (cboTargetMode.SelectedIndex) { case 1: // ..... some code here... break; case 2: // ..... some code here... break; case 3: // ..... some code here... break; default: // ..... some code here... break; } }