在Winform的组合框中获取旧的选定索引
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Winform的组合框中获取旧的选定索引相关的知识,希望对你有一定的参考价值。
我有一个组合框(winform)。这个组合框有一些项目(例如1,2,3,4)。
现在,当我更改此组合中的选择时,我希望知道旧索引和新索引。
我怎么得到这个?
我希望避免的可能方法。
- 添加一个enter事件,缓存当前索引然后选择索引更改获取新索引。
- 使用事件发件人收到的所选文本/所选项目属性。
我理想的想要:
- 在收到的args事件中,我想要的是: e.OldIndex; e.newIndex; 现在,在SelectionIndex Change事件中收到的事件参数完全没用。
- 我不想使用多个事件。
- 如果C#,不提供此功能,我可以将我的事件传递给旧索引和新索引作为事件参数吗?
答案
似乎这是一个可能的重复
ComboBox SelectedIndexChanged event: how to get the previously selected index?
内置任何内容,您将需要监听此事件并在类变量中跟踪。
但这个答案似乎提出了一种合理的方式来扩展组合框以跟踪以前的指数https://stackoverflow.com/a/425323/81053
另一答案
1 - 制作整数列表 2 - 将按钮绑定以切换到上一个屏幕(按钮名称“prevB”) 3 - 按照代码中的描述更改ComboBox索引
//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];
}
}
另一答案
您需要使用以下控件替换ComboBox:
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
财产。
以上是关于在Winform的组合框中获取旧的选定索引的主要内容,如果未能解决你的问题,请参考以下文章