2

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

オートコンプリートボックスがサーバー名用であると仮定すると、「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から値を取得しています。

アップデート

@Tom Studeeが提案したように、オートコンプリートのアイテムが選択されている場合に正常に機能するtxtServer.selectedItemを使用してみました。ただし、ドロップダウンオートコンプリート内にない値が入力された場合、NullPointerExceptionで失敗します。

4

2 に答える 2

2

プロパティを.Text使用する代わりに。.SelectedItem

于 2011-07-31T23:13:23.947 に答える
-3

あなたはできるかもしれません

   string cbValue;
   if (SelectedIndex == -1) cbValue = .Text; else cbValue = .SelectedItem;
于 2011-08-01T00:42:41.627 に答える