2013-08-27 39 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