WPF 中的组合框延迟选择
Combo Box in WPF delayed Selection
我有一个连接到数据库的组合框。它的工作原理很好。然而,当我 select 组合框中的项目延迟时,我 运行 遇到了一个问题。
示例:我点击项目“A”没有任何反应。但是,当我单击另一个项目时,让我们说“B”,然后它会将我的文本块值更改为我第一次单击的组合框中的 selected 项目。所以它延迟了一个因素。
我的问题是为什么它在第一次点击时不起作用,但在第二次点击时起作用但延迟了一次。我正在使用 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();
}
请记住,我使用已初始化的组件调用 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.Text 在 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();
}
Get selected value from combo box in C# WPF
我有一个连接到数据库的组合框。它的工作原理很好。然而,当我 select 组合框中的项目延迟时,我 运行 遇到了一个问题。
示例:我点击项目“A”没有任何反应。但是,当我单击另一个项目时,让我们说“B”,然后它会将我的文本块值更改为我第一次单击的组合框中的 selected 项目。所以它延迟了一个因素。
我的问题是为什么它在第一次点击时不起作用,但在第二次点击时起作用但延迟了一次。我正在使用 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();
}
请记住,我使用已初始化的组件调用 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.Text 在 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();
}
Get selected value from combo box in C# WPF