需求:ListCtrl控件中的列表的某行内容内容,点击上移按钮向上移动,点击下移按钮向下移动
列表行上移:
//获取当前行号
POSITION ps;
int nCurrentItem;
ps = m_list.GetFirstSelectedItemPosition();
nCurrentItem = m_list.GetNextSelectedItem(ps);
//已经到最顶端则不上移
if (nCurrentItem <= 0)
{
MessageBox(_T("已经移动到最顶端!"),NULL, MB_ICONINFORMATION);
return;
}
//提取行所有信息
int nColumnCount = m_list.GetHeaderCtrl()->GetItemCount();
CString strCurrentItem[30]; //给予更大的空间
for (int i = 0; i <= nColumnCount; i++)
{
strCurrentItem[i] = m_list.GetItemText(nCurrentItem, i);
}
//删除该行
m_list.DeleteItem(nCurrentItem);
// 在nCurrentItem -1位置处插入上面所删列表项的各列
int strNewItem = m_list.InsertItem(nCurrentItem - 1, strCurrentItem[0]);
for (int j = 1; j <= nColumnCount; j++)
{
m_list.SetItemText(strNewItem, j, strCurrentItem[j]);
}
// 使得IndexInFieldList-1位置处项目高亮显示并获得焦点
nCurrentItem--;
m_list.SetFocus();
m_list.SetItemState(nCurrentItem, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED);
列表行下移:
//获取当前行号
POSITION ps;
int nCurrentItem;
ps = m_list.GetFirstSelectedItemPosition();
nCurrentItem = m_list.GetNextSelectedItem(ps);
//已经到最顶端则不上移
if (nCurrentItem >= m_list.GetItemCount() - 1)
{
MessageBox(_T("已经移动到最底端!"),NULL, MB_ICONINFORMATION);
return;
}
//提取行所有信息
int nColumnCount = m_list.GetHeaderCtrl()->GetItemCount();
CString strCurrentItem[30]; //给予更大的空间
for (int i = 0; i <= nColumnCount; i++)
{
strCurrentItem[i] = m_list.GetItemText(nCurrentItem, i);
}
//删除该行
m_list.DeleteItem(nCurrentItem);
// 在nCurrentItem +1位置处插入上面所删列表项的各列
int strNewItem = m_list.InsertItem(nCurrentItem + 1, strCurrentItem[0]);
for (int j = 1; j <= nColumnCount; j++)
{
m_list.SetItemText(strNewItem, j, strCurrentItem[j]);
}
// 使得IndexInFieldList-1位置处项目高亮显示并获得焦点
nCurrentItem++;
m_list.SetFocus();
m_list.SetItemState(nCurrentItem, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED);