CListCtrl 获取列表中选中的项
时间: 2024-03-22 15:42:59 浏览: 182
您可以使用 CListCtrl::GetNextItem 方法来获取选定行的索引。以下是一个示例代码片段:
```c++
CListCtrl listCtrl;
int nSelectedItem = -1;
// 获取第一个选定行的索引
nSelectedItem = listCtrl.GetNextItem(-1, LVNI_SELECTED);
// 如果有选定项,则打印其索引
if (nSelectedItem != -1)
{
TRACE(_T("Selected item index: %d"), nSelectedItem);
}
```
此代码片段将获取第一个选定行的索引,并将其打印到调试输出中。如果您需要获取所有选定行的索引,则可以使用一个循环来遍历列表并使用 GetNextItem 方法获取每个选定行的索引。
相关问题
CLISTCTRL获取当前选中项
你可以使用 CListCtrl::GetNextItem 函数和 LVNI_SELECTED 标志来获取当前选中项。
示例代码如下:
```
int nIndex = -1;
nIndex = m_listCtrl.GetNextItem(nIndex, LVNI_SELECTED);
if (nIndex != -1)
{
// 当前选中项的索引为 nIndex
}
else
{
// 没有选中任何项
}
```
其中,m_listCtrl 是你的 CListCtrl 对象。如果 nIndex 返回的是 -1,表示当前没有选中任何项。如果要获取多个选中项,可以在循环中调用 GetNextItem 函数来获取每个选中项的索引。
CListCtrl 遍历所有项,并获取列表中选中的项
您可以使用 CListCtrl::GetItemCount 方法获取列表中的项数,然后使用一个循环遍历所有项并检查哪些项被选中。以下是一个示例代码片段:
```c++
CListCtrl listCtrl;
int nItemCount = listCtrl.GetItemCount();
for (int i = 0; i < nItemCount; i++)
{
// 检查第 i 行是否被选中
if (listCtrl.GetItemState(i, LVIS_SELECTED) == LVIS_SELECTED)
{
// 如果是,则获取该行的数据并进行处理
CString strItemText = listCtrl.GetItemText(i, 0);
// ...
}
}
```
此代码片段将遍历所有行,并检查哪些行被选中。对于每个选定行,它将获取该行的第一列文本,并执行任何其他必要的操作。
请注意,如果列表控件的样式设置为 LVS_SINGLESEL,则只能选择一行,因此您可以省略循环并使用 GetNextItem 方法来获取选定行的索引,如我在上一个问题中所示的示例代码片段。
阅读全文