向listview添加内容是一个简单的过程,如
ListViewItem item = new ListViewItem();
listView1.Items.Add(item);
item.Text = "fdfdfd";
item.SubItems.Add("melp");
item.SubItems.Add("asfd");
任何人都可以告诉我这里究竟发生了什么,虽然这里也添加并显示了内容,我从我的项目中获取的这段代码
protected override void OnUpdate()
{
string func = "ResourcePolicySystemsLVI.OnUpdate";
try
{
if(Data != null)
{
Text = base.Data.Name;
if(SubItems.Count == 1)
{
SubItems.Add(((IResourcePolicy)Data).ResourcePolicyEnabled.ToString()); // ResourcePolicyEnabled and ResourcePolicyCurrent are attributes
SubItems.Add(((IResourcePolicy)Data).ResourcePolicyCurrent.ToString());
}
else
{
SubItems[1].Text = ((IResourcePolicy)Data).ResourcePolicyEnabled.ToString();
SubItems[2].Text = ((IResourcePolicy)Data).ResourcePolicyCurrent.ToString();
}
}
base.OnUpdate();
}
/// <summary>
/// The IResourcePolicy interface of the ManagedDevice associated with this ListViewItem.
/// </summary>
public new IResourcePolicy Data
{
get
{
return (IResourcePolicy)base.Data;
}
}
答案 0 :(得分:0)
好吧,它正在检查SubItems
计数。如果只有1个子项,则会添加2个带有PolicyEnabled/PolicyCurrent
字符串的新子项。否则,假设存在大于1个SubItem并且仅将SubItems的Text(值)设置为新值。我认为它应该是if(SubItems.Count > 1)
。所以我认为基本上第一次运行它会发现没有子项,创建2个新子项。然后在每个后续调用中,它将简单地更新现有子项而不是添加更多
实际上,我认为SubItem.Count
检查应该是&gt; 0,因为最初将没有SubItems。如果该代码实际上正在工作,我假设在调用该函数之前正在创建SubItems,因此它永远不会中断。总的来说,它看起来很容易打破。