2012-08-23 69 views
5

我有一個組合框(winform)。這個組合框有一些項目(例如1,2,3,4)。獲取Winform組合框中的舊選定索引

現在,當我改變這種組合中選擇,我想知道舊索引新的索引

我該如何得到這個?

我希望的可能的方法避免

  1. 添加進入事件,緩存當前索引,然後在選擇指數的變化得到了新的索引。

  2. 使用事件發件人收到的選定文本/選定項目屬性。

我最好要:

  1. 在所接收的事件參數,我想是這樣的:

    e.OldIndex; e.newIndex;

    現在收到的事件參數SelectionIndex更改事件完全沒用。

  2. 我不想使用多個事件。

  3. 如果C#不提供這個,我可以讓我的事件通過舊索引和新索引作爲事件參數嗎?

+0

嗨Nikhil,你可以使用一個變量,沒有任何事件,如果你同意這個想法告訴我發佈代碼作爲答案。 –

+0

ComboBoxEdit by devexpress有EditValueChanging event.if你不想用索引做任何事情,只想要文本屬性,那麼它比標準組合框更好控制。請參閱http://documentation.devexpress.com/#WindowsForms/DevExpressXtraEditorsBaseEdit_EditValueChangingtopic –

+1

可能重複[ComboBox SelectedIndexChanged事件:如何獲得以前選擇的索引?](http://stackoverflow.com/questions/3237885/combobox-selectedindexchanged-事件如何對獲得最先前所選的指數) – Rawling

回答

0

1 - 做一個整數列表
2,綁定一個按鈕切換到以前的屏幕(按鈕名稱「prevB」)
3,改變組合框指數作爲每代碼描述

//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

您將需要更換與T組合框他跟隨控制:

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); 
    } 
} 

現在你可以得到PreviouslySelectedIndex屬性。

相關問題