私はあなたが「選択の名前」で何を意味するかわからないので、私はあなたが選択した項目を表しコンボに表示されるテキストのホールドを取得したいと仮定しています。
あなたの手の中にコンボ自体たら:
private void OnSelectedIndexChanged(object sender, RoutedEventArgs e)
{
var combo = (ComboBoxEdit)sender;
(...)
}
をあなたはいくつかのオプションがあります。最も信頼性の高いもの(DisplayMember
プロパティ、DisplayTextConverter
プロパティ、CustomDisplayText
イベントを考慮して)コンボに表示されるべき実際のテキストを保持する読み取り専用プロパティであるcombo.DisplayText
プロパティを使用するのが最も信頼できるものです。
別のオプション(特定のケースで)は(string)combo.SelectedItem
です。ただし、combo.SelectedItem
は実際に選択された項目を返し、テキスト表現ではありません。アイテムがタイプstring
である限り、上記は問題ありません。そうでない場合はInvalidCastException
が得られます。また、この場合、の内容は、と表示されない場合があります(前の段落で述べたように、表示されたテキストを変更する方法はいくつかあります)。
さらに別のオプションはであり、DisplayMember
を考慮するが、DisplayTextConverter
でもCustomDisplayText
でもない。
EDIT
は、一度にSelectedIndexChanged
を上げて、DisplayText
プロパティはまだ(特に驚くべきことではありません)、新たに選択した項目を反映するように更新されていないことが判明します。それに対処するには、DisplayText
値の取得を延期する必要があります。私は個人的に(コンボに関連付けられているDispatcher
を使用して)これらの線に沿って何かでいいと思う:
private void OnSelectedIndexChanged(object sender, RoutedEventArgs e)
{
var combo = (ComboBoxEdit)sender;
combo.Dispatcher.BeginInvoke(new Action(() =>
{
var text = combo.DisplayText;
(...)
}));
}
あなたはSystem.Windows.Forms.ComboBox' 'を考えています。 OPは、DevExpress WPF controlsスイートからの 'ComboBoxEdit'を使用しています。 – Grx70