【发布时间】:2018-08-24 17:33:42
【问题描述】:
我制作了一个可编辑的组合框,用于过滤项目。
下面列出了一些问题。
1.) 第一个问题是它只能在第一次使用。例如,如果我第一次输入 B,它会显示以 B 开头的项目列表。然后如果我按 Backspace 并再次输入 B,那么它只会显示列表中以 B 开头的第一个项目。这是现在的实际问题.下面是我修改后的代码的链接。
2.) 第二个问题是我无法在 Combobox 中输入完整的单词,它只允许我输入第一个字母。它会向我显示与之匹配的项目列表。
XAML 端代码
<ComboBox Height="23" HorizontalAlignment="Left" Margin="292,104,0,0" Name="comboBox3" VerticalAlignment="Top" Width="149" IsEditable="True" IsTextSearchEnabled="True" PreviewTextInput="comboBox3_PreviewTextInput" TextBoxBase.TextChanged="ComboBox_TextChanged"/>
事件处理程序
private void comboBox3_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
ComboBox comboBox = sender as ComboBox;
comboBox.IsDropDownOpen = true;
}
private void ComboBox_TextChanged(object sender, TextChangedEventArgs e)
{
if (((ComboBox)sender).Text != "")
{
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter("Select p_id_pk,p_name FROM products", con);
da.Fill(ds, "products");
comboBox3.ItemsSource = ds.Tables[0].DefaultView.RowFilter = "p_name like '" + ((ComboBox)sender).Text + "'+'%'";
//comboBox3.ItemsSource = ds.Tables[0].DefaultView.RowFilter = "p_name like 'B%'";
comboBox3.ItemsSource = ds.Tables[0].DefaultView;
comboBox3.DisplayMemberPath = ds.Tables[0].Columns["p_name"].ToString();
comboBox3.SelectedValuePath = ds.Tables[0].Columns["p_id_pk"].ToString();
}
}
请帮忙
【问题讨论】: