WPF中的组合框延迟选择



我有一个连接到数据库的组合框。这很好。然而,当我在组合框中选择项目时,我遇到了一个问题。

示例:我点击项目"什么也不会发生。然而,当我点击另一个项目的时候我们说"B"然后它将我的文本块值更改为我第一次单击的组合框中的选定项。所以它延迟了1倍

我的问题是为什么它不工作在第一次点击,但然后在第二次点击,但延迟了一个。我使用WPF c#,SelectedChanged

我的代码如下:

ComboBox

private void FillModelComboBox()
{
cn.Open();
SqlCommand cmd = new SqlCommand("SELECT distinct NSTPartNum FROM RLWSTable ", cn);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
ModelComboBox.Items.Add(dr["NSTPartNum"]);


}
cn.Close();
}

SelectedChanged

private void ModelComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
cn.Open();
SqlCommand cmd = new SqlCommand("SELECT * FROM RLWSTable where NSTPartNum='" + ModelComboBox.Text + "'", cn);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
string modelnumber = dr["ModelNum"].ToString();
TxtCalModelNumber.Text = modelnumber.ToString();
}
cn.Close();
}

请记住,我用我的Initialized组件调用FillComboBox(),以便它填充组合框。我还在代码的其他部分调用我的SQL连接,但这一切都很好。

[输入图片描述][1]

上面的图片是程序的主要部分,下面的第二张图片是问题。

问题是第一次点击没有任何反应

[输入图片描述][2]

然后第二次点击一切工作正常,但它的延迟。数据库的建立方式是我们有我们的零件号,然后是客户的零件号。所以这里的识别键是15K,我点击了15k,什么也没发生,然后当我点击2.5k,它就变成了15k。无论你点击什么,它都会延迟1次点击。

我哪里出错了,还是我错过了什么?

编辑*

这个修复了问题

private void ModelComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
string ModelNum = ModelComboBox.SelectedItem.ToString();
cn.Open();
SqlCommand cmd = new SqlCommand("SELECT * FROM RLWSTable where NSTPartNum='" + ModelNum + "'", cn);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
string modelnumber = dr["ModelNum"].ToString();
TxtCalModelNumber.Text = modelnumber.ToString();
}
cn.Close();
}

我添加了string ModelNum = ModelComboBox.SelectedItem.ToString();

这是在连接打开之前添加的[1]: https://i.stack.imgur.com/AvkkT.png[2]: https://i.stack.imgur.com/E1R1m.png

问题是' ModelComboBox。文本在SelectionChanged事件后更新。这可能会解决您的问题(重复?)

private void ModelComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
ComboBoxItem typeItem = (ComboBoxItem)cboType.SelectedItem;
string value = typeItem.Content.ToString();
cn.Open();
SqlCommand cmd = new SqlCommand("SELECT * FROM RLWSTable where NSTPartNum='" + value + "'", cn);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
string modelnumber = dr["ModelNum"].ToString();
TxtCalModelNumber.Text = modelnumber.ToString();
}
cn.Close();
}

从c# WPF的组合框中获取选定值

最新更新