为啥我的Cstring str=m_ListCtrl.GetItemText(nld,0)是空的?

liutingting2020 2014-07-11 09:30:28
各位大侠:请看代码。

我是打算从List Control控件里面获得某一行或者某几行的数据,然后存储起来。
部分代码如下:

int nld;
//首先得到点击的位置;
POSITION pos=m_ListCtrl.GetFirstSelectedItemPosition();
//得到行号,通过POSITION转化
nld=(int)m_ListCtrl.GetNextSelectedItem(pos);
CString str=_T(''");
str+=m_ListCtrl.GetItemTEXT(nld,0);//获取第0列的数值。
...全文
199 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
liutingting2020 2014-07-11
  • 打赏
  • 举报
回复
引用 12 楼 lx624909677 的回复:
[quote=引用 8 楼 liutingting2020 的回复:] [quote=引用 6 楼 lx624909677 的回复:]
NM_LISTVIEW* pNMListView=(NM_LISTVIEW*)pNMHDR;
CRect rc;
m_Row = pNMListView->iItem;//获得选中的行
m_Col = pNMListView->iSubItem;//获得选中列

CString strListData;
if   (pNMListView->iSubItem != 0) //如果选择的是子项;
{
	m_listCtrl.GetSubItemRect(m_Row,m_Col,LVIR_LABEL,rc);//获得子项的RECT;
	strListData = m_listCtrl.GetItemText(m_Row,m_Col);//这里就是获得选择行列的内容
}
我每次都是选中一整行呢,没有单独说选中一个单元格?[/quote] 我记得单独选一行是有个风格要添加的。具体忘了。。。[/quote]谢谢各位亲没,原来是我调试的时候不知道F10是单步调试,结果还没运行到那一步。后来问了别人,帮我调试,根本没错。汗。。。。。所以我的问题解决的。
lx624909677 2014-07-11
  • 打赏
  • 举报
回复
引用 8 楼 liutingting2020 的回复:
[quote=引用 6 楼 lx624909677 的回复:]
NM_LISTVIEW* pNMListView=(NM_LISTVIEW*)pNMHDR;
CRect rc;
m_Row = pNMListView->iItem;//获得选中的行
m_Col = pNMListView->iSubItem;//获得选中列

CString strListData;
if   (pNMListView->iSubItem != 0) //如果选择的是子项;
{
	m_listCtrl.GetSubItemRect(m_Row,m_Col,LVIR_LABEL,rc);//获得子项的RECT;
	strListData = m_listCtrl.GetItemText(m_Row,m_Col);//这里就是获得选择行列的内容
}
我每次都是选中一整行呢,没有单独说选中一个单元格?[/quote] 我记得单独选一行是有个风格要添加的。具体忘了。。。
fishion 2014-07-11
  • 打赏
  • 举报
回复
看看其它列的值能取到不,可能是把0列给隐藏了
信阳毛尖 2014-07-11
  • 打赏
  • 举报
回复
那你自己测试一下: CString str=m_ListCtrl.GetItemText(0,0);//获取第0行第0列的值 看看是什么结果先
还在查 2014-07-11
  • 打赏
  • 举报
回复
你的插入的代码呢,是不是0列你根本就没插入或者插了个图标什么的
liutingting2020 2014-07-11
  • 打赏
  • 举报
回复
引用 6 楼 lx624909677 的回复:
NM_LISTVIEW* pNMListView=(NM_LISTVIEW*)pNMHDR;
CRect rc;
m_Row = pNMListView->iItem;//获得选中的行
m_Col = pNMListView->iSubItem;//获得选中列

CString strListData;
if   (pNMListView->iSubItem != 0) //如果选择的是子项;
{
	m_listCtrl.GetSubItemRect(m_Row,m_Col,LVIR_LABEL,rc);//获得子项的RECT;
	strListData = m_listCtrl.GetItemText(m_Row,m_Col);//这里就是获得选择行列的内容
}
我每次都是选中一整行呢,没有单独说选中一个单元格?
liutingting2020 2014-07-11
  • 打赏
  • 举报
回复
引用 5 楼 schlafenhamster 的回复:
是不是 自绘的 ?
好像不是唉,自绘的??? str。调试的时候说Bad Ptr
lx624909677 2014-07-11
  • 打赏
  • 举报
回复
NM_LISTVIEW* pNMListView=(NM_LISTVIEW*)pNMHDR;
CRect rc;
m_Row = pNMListView->iItem;//获得选中的行
m_Col = pNMListView->iSubItem;//获得选中列

CString strListData;
if   (pNMListView->iSubItem != 0) //如果选择的是子项;
{
	m_listCtrl.GetSubItemRect(m_Row,m_Col,LVIR_LABEL,rc);//获得子项的RECT;
	strListData = m_listCtrl.GetItemText(m_Row,m_Col);//这里就是获得选择行列的内容
}
schlafenhamster 2014-07-11
  • 打赏
  • 举报
回复
是不是 自绘的 ?
liutingting2020 2014-07-11
  • 打赏
  • 举报
回复
引用 1 楼 i03630211 的回复:
没插数据,还是没选中数据行
我List Control里面的数据有的是文件路径,有的是汉字?难道与格式有关系?
liutingting2020 2014-07-11
  • 打赏
  • 举报
回复
引用 楼主 liutingting2020 的回复:
各位大侠:请看代码。 我是打算从List Control控件里面获得某一行或者某几行的数据,然后存储起来。 部分代码如下: int nld; //首先得到点击的位置; POSITION pos=m_ListCtrl.GetFirstSelectedItemPosition(); //得到行号,通过POSITION转化 nld=(int)m_ListCtrl.GetNextSelectedItem(pos); CString str=_T(''"); str+=m_ListCtrl.GetItemTEXT(nld,0);//获取第0列的数值。
顶自己,顶自己,顶自己
liutingting2020 2014-07-11
  • 打赏
  • 举报
回复
引用 1 楼 i03630211 的回复:
没插数据,还是没选中数据行
选中数据行了,我也插入数据了。我用的是VS2010。调试的时候,行号nld是对的,但是str里面没有值呢??
还在查 2014-07-11
  • 打赏
  • 举报
回复
没插数据,还是没选中数据行

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧