【发布时间】:2020-03-04 10:25:15
【问题描述】:
我正在尝试对组合框实施 textchanges 事件,以便项目根据在同一组合框中输入的值进行更改。
这是我的 XAML
<ComboBox Name="ComboBoxRoleNameDescEdit" IsEditable="True" TextBoxBase.TextChanged="ComboBoxRoleNameDescEdit_TextChanged"/>
这是代码隐藏:
private void ComboBoxRoleNameDescEdit_TextChanged(object sender, TextChangedEventArgs e)
{
try
{
ComboBoxRoleNameDescEdit.Items.Clear();
using (var Connect = new SqlConnection(connstr))
{
Connect.Open();
using (var Command = new SqlCommand("[dbo].[spParametresRolesTb_FillRoleIdComboBox]", Connect))
{
Command.CommandType = CommandType.StoredProcedure;
Command.Parameters.Add("@search", SqlDbType.VarChar).Value = ComboBoxRoleNameDescEdit.Text;
Command.Parameters.Add("@entity_id", SqlDbType.VarChar).Value = LoggedInData.LoggedInstitutionId;
SqlDataReader dr = Command.ExecuteReader();
while (dr.Read())
{
string classes = dr.GetString(0);
ComboBoxRoleNameDescEdit.Items.Add(classes);
}
dr.Close();
}
Connect.Close();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
我遇到的问题是,因为我需要在每个输入处刷新项目列表,所以由于这段代码“ComboBoxRoleNameDescEdit.Items.Clear();”,输入本身正在被清除。实际上,只有第一个输入会被自动清除,其余输入不会。
知道如何克服这个问题吗?
【问题讨论】:
-
ComboBoxRoleNameDescEdit.DataSource = null;而不是 clear 并最终使用ComboBoxRoleNameDescEdit.ResetText(); -
感谢 styx,但 DataSource 和 ResetText 在 WPF 中不起作用。我猜那一定是 Winform。