gpt4 book ai didi

c++ - 我可以在不更改其他项目索引的情况下从 ComboBox 中删除项目吗?

转载 作者:行者123 更新时间:2023-11-30 01:30:54 25 4
gpt4 key购买 nike

我有一个包含多个项目的 CComboBox 控件,我需要删除其中一些,但应保留其余项目的索引。

当组合框被填充时,项目数据设置如下:

index = mycombo.AddString(temp);
mycombo.SetItemData(index, static_cast<DWORD>(count));

其中 count 是一个循环计数器,应该等于 index

现在我想稍后删除一些项目,但我需要每个剩余项目的索引保持不变。 CComboBox::DeleteString(UINT nIndex) 是我应该使用的吗?它的文档说:

All items following nIndex now move down one position. For example, if a combo box contains two items, deleting the first item will cause the remaining item to now be in the first position. nIndex=0 for the item in the first position.

这是在谈论下拉菜单中的物理位置,还是与项目关联的索引值?

还有其他功能可以满足我的需要吗?另一种解决方案?

最佳答案

Is that talking about the physical location in the drop-down menu, or the index value associated with the item?

对于 ComboBox(以及 ListBox、List Control,可能还有许多其他类似的东西),控件上项目的位置直接与其索引相关联。索引位置。实际上,只需将其想象成 ComboBox 是使用简单的 std::vector 在内部实现的。您无法在不影响所有后续条目的索引的情况下从 vector 中删除一个条目,这些控件也是如此。

但是,ComboBox(和其他此类控件)中条目的项目数据会与该条目保持一致,无论它被重新分配给什么索引。

假设您创建了两个条目:索引 0 处的第一个具有 text="A"和 ItemData=0;而索引 1 处的第二个具有 text="B"和 ItemData=1。如果您随后删除第一个条目,则第二个条目将向下移动索引及其 ItemData 将移动的声明。因此,您将在索引 0 处留下一个具有 text="B"和 ItemData=1 的条目。

关于c++ - 我可以在不更改其他项目索引的情况下从 ComboBox 中删除项目吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3937263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com