【发布时间】:2012-07-11 11:23:47
【问题描述】:
ListView 似乎像鸡貂一样脾气暴躁,像 [被 P.C.警察]
在 - 和其他人的帮助下,我能够让 ListView 像我想要的那样工作 它到 (http://stackoverflow.com/questions/11423537/how-to-add-subitems-to-a-listview)。
现在我正在转换这个简单的演示,以便在实际应用中使用。
我在表单的 Load 事件中创建列:
listViewGroupsItems.Columns.Add(colHeadName);
listViewGroupsItems.Columns.Add(colHeadRate);
...但它们不显示。但是,我的第一项上方有一个空行。那么为什么没有显示文本值。他们“在那里”但看不见吗?为什么他们会被消灭?
反正我想看到的是:
column1Title column2Title
Group1Name
Item subitem
Item subitem
Group2Name
Item subitem
Group1Name
Item subitem
Item subitem
Item subitem
Item subitem
...但我实际看到的只是:
[blank line]
Group1Name
...就是这样!
ListView 的 View 属性设置为 Details;否则,所有属性都是默认值。
我的列表视图代码是:
private void AddGroupsAndItems() {
Dictionary<string, string> GroupsDict = PlatypusData.GetGroupsForTopLevel(Convert.ToInt32(labelTopLevel.Tag));
int currentGroup = 0;
foreach (KeyValuePair<string, string> entry in GroupsDict) {
string GroupNumber = entry.Key;
string GroupName = entry.Value;
listViewGroupsItems.Groups.Add(new ListViewGroup(GroupName, HorizontalAlignment.Left));
Dictionary<string, string> ItemsDict = PlatypusData.GetItemsForGroup(GroupNumber);
foreach (KeyValuePair<string, string> itemEntry in ItemsDict) {
string itemID = itemEntry.Key;
string itemName = itemEntry.Value;
ListViewItem lvi = new ListViewItem(string.Format("{0} ({1})", itemName, itemID));
lvi.SubItems.Add(PlatypusData.GetDuckbillNameForItemId(itemID));
listViewGroupsItems.Items.Add(lvi);
listViewGroupsItems.Groups[currentGroup].Items.Add(lvi);
}
currentGroup++;
}
}
更新
我将表单的 Load 事件中的代码更改为:
var colHeadName = new ColumnHeader { Text = Resources.RateRequestForm_RateRequestForm_Load_Billing_Account_Client, Width = 160 };
var colHeadRate = new ColumnHeader { Text = Resources.RateRequestForm_RateRequestForm_Load_RatePlan_ID, Width = 120 };
listViewCustomerBillAccountsClients.Columns.Add(colheadName); //colHeadName);
listViewCustomerBillAccountsClients.Columns.Add(colheadRate); //colHeadRate);
...到:
ColumnHeader colheadName = new ColumnHeader();
ColumnHeader colheadRate = new ColumnHeader();
listViewCustomerBillAccountsClients.Columns.Add(colheadName);
listViewCustomerBillAccountsClients.Columns.Add(colheadRate);
...完全没有区别。
似乎 ColumnHeader 构造函数应该能够获取它应该显示的字符串,但即使我这样做:
ColumnHeader colheadName = new ColumnHeader("This");
ColumnHeader colheadRate = new ColumnHeader("That");
...仍然没有变化(根据 Intellisense 或其他名称,字符串 arg 是 ImageKey,但我想我会出于彻底/沮丧而尝试。
【问题讨论】:
-
您是否将 View 属性设置为“详细信息”?
-
@Beaner - 是的,帖子中提到了(查看 = 详细信息)。
标签: c# .net winforms listview listviewitem