2013-08-27 38 views
0

我有一种形式,我展示另一种形式:列表项不清除

if (headerText == "") 
{ 
    MhrtTemplateColumn objMhrtTemplateColumn = 
      new MhrtTemplateColumn("", lstUnusedChannelTags); 
    objMhrtTemplateColumn.ShowDialog(); 
} 
else 
{ 
    MhrtTemplateColumn objMhrtTemplateColumn = 
      new MhrtTemplateColumn(ChannelDesc, lstUnusedChannelTags, CurrentTag); 
    objMhrtTemplateColumn.ShowDialog(); 
} 

这些都是重载构造:

public MhrtTemplateColumn(string channelDescription, List<string> channelTags) 
{ 
    InitializeComponent(); 
    this.ChannelDescription = channelDescription; 
    this.ChannelTags = new List<string>(); 
    this.ChannelTags.Clear();    
    this.ChannelTags = channelTags; 
} 
public MhrtTemplateColumn(string channelDescription, List<string> channelTags, string CurrentChannelTag) 
{ 
    InitializeComponent(); 
    this.ChannelDescription = channelDescription; 
    this.ChannelTags = new List<string>(); 
    this.ChannelTags.Clear(); 
    this.ChannelTags = channelTags; 
    this.CurrentChannelTag = CurrentChannelTag; 
} 

这是MhrtTemplateColumn的Window_Loaded事件:

private void Window_Loaded(object sender, RoutedEventArgs e) 
{ 
    txtChannelDescription.Text = ChannelDescription; 
    if (CurrentChannelTag != null && CurrentChannelTag != "") 
    { 
     if(ChannelTags.Contains(CurrentChannelTag) == false) 
      ChannelTags.Add(CurrentChannelTag); 
     cmbChannelTag.ItemsSource = null; 
     cmbChannelTag.ItemsSource = ChannelTags; 
     cmbChannelTag.SelectedValue = CurrentChannelTag; 
    } 
    else 
    { 
     cmbChannelTag.ItemsSource = null; 
     cmbChannelTag.ItemsSource = ChannelTags; 
     cmbChannelTag.SelectedIndex = 0; 
    }   
} 

我的问题是当else块被执行时,一个新项目被添加到列表中。在关闭表单并再次用代码显示if block后,列表中仍然会添加新的项目。为什么?

+0

为什么不呢? – Blorgbeard

回答

1
this.ChannelTags = new List<string>(); 
this.ChannelTags.Clear();    
this.ChannelTags = channelTags; 

我想用这段代码你试图复制channelTags?如果是这样,这是如何做到这一点:

this.ChannelTags = channelTags.ToList(); 

你的代码只是创建一个空的列表中,清除它,然后它扔了出去并分配channelTags到外地来代替。

+0

谢谢。你的回答有帮助。 – Abhishek