在Winform的组合框中获取旧的选定索引

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Winform的组合框中获取旧的选定索引相关的知识,希望对你有一定的参考价值。

我有一个组合框(winform)。这个组合框有一些项目(例如1,2,3,4)。

现在,当我更改此组合中的选择时,我希望知道旧索引和新索引。

我怎么得到这个?

我希望避免的可能方法。

  1. 添加一个enter事件,缓存当前索引然后选择索引更改获取新索引。
  2. 使用事件发件人收到的所选文本/所选项目属性。

我理想的想要:

  1. 在收到的args事件中,我想要的是: e.OldIndex; e.newIndex; 现在,在SelectionIndex Change事件中收到的事件参数完全没用。
  2. 我不想使用多个事件。
  3. 如果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的组合框中获取旧的选定索引的主要内容,如果未能解决你的问题,请参考以下文章

用于获取组合框的选定文本的 PHP 代码

Vba代码显示组合框中选定的数据

如何在 sql 语句中保存组合框中的选定项目和文本框中的长数字?

如何在vfp中的选定组合框中填充列表框?

如何更改 Ext js 组合框中某些值的索引

在组合框中组合两个选定的数字以创建日期(日和月)