2012-08-23 43 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属性。

相关问题