ListControl控件獲取多行數據信息


我現在有一個ListControl控件
.....
   for(int j=0;j<=nCount;j++)
  {
   C_List.InsertItem(j,"c");//
  C_List.SetItemText(j,0,str);//設置第一列數據
   C_List.SetItemText(j,1,st);//設置第二列數據
  }
.....
我現在要獲取選擇某一行或者多行第一列的如下信息:(選擇的名字,選擇的行數)
怎么獲取啊 謝謝

5 个解决方案

#1


GetCurSel function
Returns the zero-based index of the currently selected string in a list box. 

GetText  function
Copies a list-box item into a buffer. 


不知道你是不是需要這個

#2



POSITION pos = C_List.GetFirstSelectedItemPosition();
if (pos == NULL)
   TRACE0("No items were selected!\n");
else
{
   while (pos)
   {
      int nItem = C_List.GetNextSelectedItem(pos);
      TRACE2("Item %d %s was selected!\n", nItem, C_List.GetItemText(nItem, 0));
   }
}

#3


GetItemText   用循環一行一行取``

#4


先添加OnDblclkList(NMHDR* pNMHDR, LRESULT* pResult)函數,
當有單擊或雙擊消息時,
利用
c_str[1][1] = m_list.GetItemText(m_list.GetSelectionMark(),0);
c_str[1][2] = m_list.GetItemText(m_list.GetSelectionMark(),1);//獲得第二列

(c_str為字符串,m_list為列表框對應的控制變量),這樣就可以獲得了一行的所有數據,
如果選擇多行,可以類似取得

#5


可以做一個帶checkbox的listctrl,然后選擇其中的幾項,再判斷狀態是否被選中,如果選中,則讀取其中的相關信息.
for(int iOrder=0; iOrder < m_ctList.GetItemCount(); iOrder)
{
  if (m_ctList.GetCheck(iOrder))
{
 CString str1= m_list.GetItemText(iOrder,0);
 CString str2 = m_list.GetItemText(iOrder,1);
}
}

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com