2016-04-07 13 views
0

私はC#でプロジェクトを行っており、ComboBoxesを検証する必要があります。 ComboBoxesが同じ値を示す場合は、同じ値を選択できないというエラーメッセージが表示されます。ComboBoxの有効化

private void btnBook_Click(object sender, EventArgs e) 
{ 
    if (cmbDeaprture == cmbDestination); 
     MessageBox.Show("Cannot have the same Destination as Departure"); 
} 

これは私のコードですが、うまくいかないようです。どんな助け?私はまだC#を学びました。

+0

、これを試してみてください;'その後で、あなたの 'if'の終わり。 –

+0

あなたの問題を解決する答えに示唆されているように '.SelectedValue'プロパティを使う以外に、データオブジェクトの' IDataErrorInfo'インターフェースを使ってビルトイン検証を行い、 '{Binding ... ValidatesOnDataErrors = true} 'を押して、コンボボックスをハイライト表示し、エラーが表示されたツールチップを取得します。私はそのアプローチが、ユーザを妨害するメッセージボックスを表示するよりもはるかに面倒であることを発見しました。 – Adwaenyth

+0

[C#のcomboBoxから項目が選択されているかどうかをチェックする方法](http://stackoverflow.com/questions/5687889/how-to-check-if-item-is-selected-from-a-combobox -in-c-sharp) – cokeman19

答えて

1

問題は、選択した値の代わりにコンボボックスを比較していることです。 さらに;があるため、あなたのケースではif-statementの本文は空です。 SelectedItemプロパティを使用して、選択した項目を取得します。

private void btnBook_Click(object sender, EventArgs e) 
{ 
    if (cmbDeaprture.SelectedItem == cmbDestination.SelectedItem) 
     MessageBox.Show("Cannot have the same Destination as Departure"); 
} 

ユーザーが何かを選択したことを確認したい場合は、SelectedItem != nullいることを確認する必要があります。 &&演算子を使用して追加できます。

if (cmbDeaprture.SelectedItem != null && cmbDeaprture.SelectedItem == cmbDestination.SelectedItem) 
+0

何も選択されていなくてもメッセージボックスが表示されますか?編集:それは大丈夫、私はそれを得た。おかげさまであなたのコードはうまく動作しました – user3018028

+0

@ user3018028助けがあれば、正しい答えをマークしたり受け入れることができます。ありがとう – Valentin

0
private void btnBook_Click(object sender, EventArgs e) 
{ 
    if (cmbDeaprture.Text.Equals(cmbDestination.Text)){ 
     MessageBox.Show("Cannot have the same Destination as Departure"); 
    } 
} 
1

それは `(cmbDeaprture.SelectedItem == cmbDestination.SelectedItem)場合、` `ことも迷走を削除する必要があります

private void btnBook_Click(object sender, EventArgs e) 
{ 
    if (cmbDeaprture.SelectedValue== cmbDestination.SelectedValue); 
    MessageBox.Show("Cannot have the same Destination as Departure"); 
}