请问listview为何只显示第一列的内容

lionelpeng00 2012-11-28 10:06:04
搞不懂为何只显示第一列的内容。不光是数据只显示第一列,用Columns.Add方法添加了几个列名,也只显示第一列的列名。
...全文
409 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lionelpeng00 2012-11-29
  • 打赏
  • 举报
回复
把宽度从默认值改成别的值之后就好了,谢谢两位!
风吹腚腚凉 2012-11-28
  • 打赏
  • 举报
回复
顺便说一下全部都要改而不是一个
风吹腚腚凉 2012-11-28
  • 打赏
  • 举报
回复
private void lmInfo_Click(XmlDocument xmlDoc) { //listview的名称为listViewAllContactsInfo。 listViewAllContactsInfo.Clear(); XmlNodeList nodes = xmlDoc.SelectNodes("contacts/contact"); foreach (XmlNode node in nodes) { XmlElement xe = (XmlElement)node; string userName = xe.ChildNodes[0].InnerText; string userClass = xe.ChildNodes[4].InnerText; string userPhoneNumber = xe.ChildNodes[6].InnerText; string userMobileNumber = xe.ChildNodes[5].InnerText; string userQqNumber = xe.ChildNodes[7].InnerText; string userEmail = xe.ChildNodes[8].InnerText; string userAddress = xe.ChildNodes[4].InnerText; // ListViewItem str = new ListViewItem(new string[]{userName, // userClass,userPhoneNumber,userMobileNumber,userQqNumber,userEmail,userAddress}); listViewAllContactsInfo.View = View.Details;//你可能没有这个。 ListViewItem str = new ListViewItem(userName); str.SubItems.Add(userClass); str.SubItems.Add(userPhoneNumber); str.SubItems.Add(userMobileNumber); str.SubItems.Add(userQqNumber); str.SubItems.Add(userEmail); str.SubItems.Add(userAddress); listViewAllContactsInfo.Columns.Add("userName", 200, HorizontalAlignment.Left); //-2太小看不见东西改成20以上 listViewAllContactsInfo.Columns.Add("userClass", -2, HorizontalAlignment.Left); listViewAllContactsInfo.Columns.Add("userPhoneNumber", -2, HorizontalAlignment.Left); listViewAllContactsInfo.Columns.Add("userMobileNumber", -2, HorizontalAlignment.Left); listViewAllContactsInfo.Columns.Add("userQqNumber", -2, HorizontalAlignment.Left); listViewAllContactsInfo.Columns.Add("userEmail", -2, HorizontalAlignment.Left); listViewAllContactsInfo.Columns.Add("userAddress", -2, HorizontalAlignment.Left); listViewAllContactsInfo.Items.Add(str); } }
lionelpeng00 2012-11-28
  • 打赏
  • 举报
回复
我的XMl文件里存储了两组数据,两个userName分别是”Fan”和“11”。在将view的属性设置为Details之前,只显示一行数据,fan后面紧跟着11。在将view的属性设置为Details之后,显示两行数据,但是只有一列,分别是Fan和11。
lionelpeng00 2012-11-28
  • 打赏
  • 举报
回复
后添加列名和自动宽度设置都是参照msdn上的例程写的。
threenewbee 2012-11-28
  • 打赏
  • 举报
回复
而且你的宽度能不能设置的大一点呢? listViewAllContactsInfo.Columns.Add("userName", -2, HorizontalAlignment.Left);
threenewbee 2012-11-28
  • 打赏
  • 举报
回复
让我们先添加Columns再添加数据好不好?
lionelpeng00 2012-11-28
  • 打赏
  • 举报
回复
源码如下: //窗口名称为AllContacts。数据从Xml文件中读取。 private void AllContacts_Load(object sender, EventArgs e) { string filename = Application.StartupPath + "\\contacts.xml"; XmlDocument xmlDoc = new XmlDocument(); try { xmlDoc.Load(filename); lmInfo_Click(xmlDoc); } catch (System.IO.FileNotFoundException) { string mStr = "<contacts>" + "</contacts>"; xmlDoc.LoadXml(mStr); xmlDoc.Save(filename); } } private void lmInfo_Click(XmlDocument xmlDoc) { //listview的名称为listViewAllContactsInfo。 listViewAllContactsInfo.Clear(); XmlNodeList nodes = xmlDoc.SelectNodes("contacts/contact"); foreach (XmlNode node in nodes) { XmlElement xe = (XmlElement)node; string userName = xe.ChildNodes[0].InnerText; string userClass = xe.ChildNodes[4].InnerText; string userPhoneNumber = xe.ChildNodes[6].InnerText; string userMobileNumber = xe.ChildNodes[5].InnerText; string userQqNumber = xe.ChildNodes[7].InnerText; string userEmail = xe.ChildNodes[8].InnerText; string userAddress = xe.ChildNodes[4].InnerText; // ListViewItem str = new ListViewItem(new string[]{userName, // userClass,userPhoneNumber,userMobileNumber,userQqNumber,userEmail,userAddress}); ListViewItem str = new ListViewItem(userName); str.SubItems.Add(userClass); str.SubItems.Add(userPhoneNumber); str.SubItems.Add(userMobileNumber); str.SubItems.Add(userQqNumber); str.SubItems.Add(userEmail); str.SubItems.Add(userAddress); listViewAllContactsInfo.Columns.Add("userName", -2, HorizontalAlignment.Left); listViewAllContactsInfo.Columns.Add("userClass", -2, HorizontalAlignment.Left); listViewAllContactsInfo.Columns.Add("userPhoneNumber", -2, HorizontalAlignment.Left); listViewAllContactsInfo.Columns.Add("userMobileNumber", -2, HorizontalAlignment.Left); listViewAllContactsInfo.Columns.Add("userQqNumber", -2, HorizontalAlignment.Left); listViewAllContactsInfo.Columns.Add("userEmail", -2, HorizontalAlignment.Left); listViewAllContactsInfo.Columns.Add("userAddress", -2, HorizontalAlignment.Left); listViewAllContactsInfo.Items.Add(str); } }
风吹腚腚凉 2012-11-28
  • 打赏
  • 举报
回复
引用 楼主 lionelpeng00 的回复:
搞不懂为何只显示第一列的内容。不光是数据只显示第一列,用Columns.Add方法添加了几个列名,也只显示第一列的列名。
你可以添加的都是同一个对象吧?你需要new一个新的对象然后放进去,拿源代码上来看看吧
threenewbee 2012-11-28
  • 打赏
  • 举报
回复
是不是你在一个循环中add的,然后后面又clear了?

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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