2011-07-31 9 views
2

現在WPF C#プロジェクトを作成中です。私はAutoCompleteBox WPFコントロールを使用していますが、ボックスから値を取得する際に問題が発生しています。C#wpfの値を取得するAutoCompleteBoxの問題

オートコンプリートボックスがサーバー名の場合、「loc」と入力すると、ポップアップボックスに「localhost」と表示され、ドロップダウンボックスから値を選択します。

フォームを送信し、ボックスの値を取得しようとすると、私が入力した値ではなく、値が 'loc'になります。以下は

は私が制御

using (SQLiteDataReader reader = cmd.ExecuteReader()) 
{ 
    List<string> serverArr = new List<string>(); 
    while (reader.Read()) 
    { 
     serverArr.Add(reader["his_server"].ToString()); 
    } 
    txtServer.ItemsSource = serverArr; 
} 

私はtxtServer.Textを言ってautocompleteboxから値を取得していますためのオートコンプリートの項目を設定するために使用していたコードです。

この件に関するお手伝いをいただければ幸いです。

おかげで、私は自動補完から項目を選択したときに正常に動作しますtxtServer.selectedItemを使用してみました@Tom Studeeによって示唆されるように

UPDATE 。しかし、ドロップダウンオートコンプリート内にない値が入力された場合は、Null Pointer Exceptionで失敗します。

+0

することができるかもしれません。あなたの 'AutoCompleteBox'はどのように定義されていますか? –

+0

@Meleak提案された項目がクリックされた場合、SelectedItemはうまく動作します。問題は、ユーザーがヌルポインター例外を引き起こす自動補完候補にない値を入力した場合です。 – Boardy

+0

これは、選択した項目またはテキストを探していますか?ユーザーがリストにない項目を選択した場合、nullが予想される結果になります。テキスト値を探していて、 'Text'プロパティを使うか、何か不足していますか? –

答えて

2

.Textの代わりに.SelectedItemプロパティを使用してください。

+1

ありがとう、これはnullポインターの例外を取得するのをやめようとしました。私はif文が.textがnullでないことを確認するために作成しました。助けてくれてありがとう – Boardy

-3

あなたは、私はそれがまた `Text`プロパティを更新し、リストからの提案項目を選択したときに、私は、これを再現することができないんだ

string cbValue; 
    if (SelectedIndex == -1) cbValue = .Text; else cbValue = .SelectedItem; 
+0

autocompleteboxのselectedindexオプションがありません。 – Boardy

+0

私は.SelectedItemの部分を正しく持っていました。私は将来あなたの質問にお答えしないように覚えています。 – Paparazzi

+0

私はselectedIndexについて話していた.SelectedItemについて話していませんでした。あなたが私の受け入れられた答えから見ることができるように、.SelectedItemは私のためにうまくいっていますが、あなたが持っていたものはうまくいきませんでした。なぜ今はあまりにも昔だったのか覚えていない。 – Boardy

関連する問題