ComboBox
は、データソースとしてBindingList<T>
インスタンスにバインドされ、DisplayMember
およびValueMember
プロパティが設定され、想定どおり動作します。データバインドされたComboBoxの選択された値を何もまたはデフォルトに設定するには?
コードのある時点で、ValueMember
という値を指定して、選択した値をプログラムで切り替えることができます。これは完璧なケースでは、ちょうどちょうどcomboBox.SelectedValue = newValue
として実行されます。しかし、他の場合には、newValue
は簡単にヌル(またはデータソース内の実際のキーにはおそらく存在しないもの)である可能性があります。これらの状況は、静かに処理すると同時に、可能な限り合理的に処理する必要があります。選択は「選択なし」状態にリセットされるか、または既定の値(あらかじめ設定された値やリストの最初の値など)にリセットされます。しかし、データソースにデフォルト値が存在しない場合、またはデータソースが空の場合はどうすればよいですか? ComboBox.SelectedValue
プロパティでnullを設定することはできません。コードのこの部分に達するという事実は、状況全体が変化し、前のオプションが設定され、前の選択が無条件に起こることを意味することがあるため、以前の選択を残して問題を無視するだけで、新しい文脈では異なる意味を持ちます。 exception
があるたびに、例外がスローされたときに、それはcatch
に
try
{
ComboBox.SelectedValue = null; //this will throw exception
ComboBox.SelectedValue = "text that dont exists" //this will throw exception
}
catch (Exception exception)
{
ComboBox.SelectedValue = "0";
}
のでcatch
ブロックに移動しますあなたの値はnull
であるか、存在しません。今までそうするとき、それは例外がスローされますtrycatch
を使用することができます
最初にソースデータに実際には "1"の値はほとんど現れず、他の種類のキーのサポートも実装されていますが、GUIDが最も頻繁に使用されます(場合によっては、数字のサポートは将来必要になる可能性があります)ので、 "BindingList"(およびそれにバインドされているComboBox自体、またはそうでない場合でも)の "BindingList"に "1"空である。この解決法はいずれの場合にも当てはまらないようだが、間違っているのだろうか? – Ivan
例外がスローされない – Usman
@Ivan値が存在しない場合は空を選択する "0"を使用できます – Usman