2012-08-23 18 views
5

Tengo un cuadro combinado (winform). Este cuadro combinado tiene algunos elementos (por ejemplo, 1,2,3,4).Obtener el índice seleccionado anterior en el cuadro Combo de Winform

Ahora, cuando cambio la selección dentro de este combo, deseo saber el índice de edad y el nuevo índice .

¿Cómo obtengo esto?

Enfoques posibles que deseo EVITAR.

  1. Añadir un Introduzca los acontecimiento, caché del índice actual y después de la selección de cambio de índice de obtener el nuevo índice.

  2. Utilizando la propiedad seleccionada de texto/elemento seleccionado recibida por el remitente del evento.

Lo que idealmente queremos:

  1. En los argumentos de eventos que se reciben, quiero algo como:

    e.OldIndex; e.newIndex;

    En este momento, los eventos args que se reciben en el evento SelectionIndex Change son totalmente inútiles.

  2. No quiero usar más de un evento.

  3. Si C# no ofrece esto, ¿puedo hacer que mi evento pase el índice anterior y el nuevo índice como argumentos de evento?

+0

Hola Nikhil, puede hacerlo utilizando una variable y sin ningún tipo de acontecimientos, si está de acuerdo la idea dime a enviar el código como respuesta. –

+0

ComboBoxEdit por devexpress tiene EditValueChanging event. Si no desea hacer nada con el índice y solo desea propiedad de texto, entonces es un mejor control que el combobox estándar. Consulte http://documentation.devexpress.com/#WindowsForms/DevExpressXtraEditorsBaseEdit_EditValueChangingtopic –

+1

posible duplicado del evento [ComboBox SelectedIndexChanged: cómo obtener el índice previamente seleccionado?] (Http://stackoverflow.com/questions/3237885/combobox-selectedindexchanged- event-how-to-get-the-previamente-selected-index) – Rawling

Respuesta

0

1-Haga una lista de números enteros
2-enlazar un botón para cambiar al anterior pantalla (botón de nombre "prevB")
3-cambiar el Índice de ComboBox como por descrita en el código

//initilize List and put current selected index in it 

List<int> previousScreen = new List<int>(); 
previousScreen.Add(RegionComboBox.SelectedIndex);  

//Button Event 
private void prevB_Click(object sender, EventArgs e) 
    { 
     if (previousScreen.Count >= 2) 
     { 
      RegionComboBox.SelectedIndex = previousScreen[previousScreen.Count - 2]; 
     } 
    } 
0

Usted tendrá que reemplazar el cuadro combinado con t lo siguiente control:

public class AdvancedComboBox : ComboBox 
{ 
    private int myPreviouslySelectedIndex = -1; 
    private int myLocalSelectedIndex = -1; 

    public int PreviouslySelectedIndex { get { return myPreviouslySelectedIndex; } } 

    protected override void OnSelectedIndexChanged(EventArgs e) 
    { 
     myPreviouslySelectedIndex = myLocalSelectedIndex; 
     myLocalSelectedIndex = SelectedIndex; 
     base.OnSelectedIndexChanged(e); 
    } 
} 

ahora que se puede obtener la propiedad PreviouslySelectedIndex.

Cuestiones relacionadas