2017-04-07 58 views
1

私はWPFアプリケーションを作成しています。私の設定パネルには、ラベル、テキストボックス、コンボボックス、2つのボタン(保存)と(キャンセル)があります。WPF - コンボボックスアイテムが重複しています

XAML

<ComboBox x:Name="myCombobox" Grid.Column="1" Margin="18,372,4,0" VerticalAlignment="Top" Height="26" SelectionChanged="MyCombobox_SelectionChanged" /> 

私はすでに私のコンボボックスに項目追加しました:

myCombobox.Items.Add("Test1"); 
myCombobox.Items.Add("Test2"); 
myCombobox.Items.Add("Test3"); 
foreach (var item in myCombobox.Items) 
    if (item.Equals(Properties.Settings.Default.MyCombobox)) 
     myCombobox.SelectedItem = item; 

をし、SelectionChangedイベントを追加しました。これは外観です:

[キャンセル]ボタンをクリックして設定パネルを再起動すると、コンボボックスの項目が複製されます。 (同じ値を2回)。

私は

myCombobox.Items.Clear(); 

イベントをクリックして、ボタンをキャンセルするために追加することでこれを防ぐためにしようとしたが、この時点で別の問題が存在する(myCombobox.SelectedItemがnull)、私はこのエラーを取得:

An exception of type 'System.NullReferenceException' occurred in IdentificationStation.exe but was not handled in user code

コンボボックスのアイテムが重複しないようにするにはどうすればよいですか?あるいは、私はMyCombobox_SelectionChanged otherwiceをやるべきですか?

+0

myCombobox.Items.Clear();これをonchangeイベントに追加します。 –

+1

コンボをどのように投入していますか?質問に関連するコードを追加する必要があります。 – Anil

+0

このアプリでは、明示的に 'myComboBox.Items.Add(...)'をルーチンで2回呼び出しています。どこに/どのように呼ばれていますか?この呼び出しを持つメソッドを表示できますか? – Jegan

答えて

1

は、あなただけのテストで

'System.NullReferenceException'

を避けることができませんか?

private void MyCombobox_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    if (myCombobox.SelectedItem != null) 
     if (myCombobox.SelectedItem.ToString().Equals("Test1")) 
     { 
      testGrid.Visibility = Visibility.Visible; 
     } 
     else if (myCombobox.SelectedItem.ToString().Equals("Test2") || myCombobox.SelectedItem.ToString().Equals("Test3")) 
     { 
      testGrid.Visibility = Visibility.Hidden; 
     } 
    } 
} 

このようにするのは悪い方法ではないと思います。

-2

使用重複するアイテムの追加を停止するには、このチェック:myCombobox.SelectedItemMyCombobox_SelectionChangedにnullの場合

if(!myComboBox.Items.Contains("item")) 
{ 
    myComboBox.Items.Add("item"); 
} 
+0

コンボボックスが動的に更新される場合にのみ、これらのタイプの検証が必要です。上のような静的な更新の場合、コーダーは呼び出しスタックを見て、ルーチンが2回呼び出されないように修正する必要があります。 – Jegan

関連する問題