gpt4 book ai didi

c# - 如何使 Silverlight TextBox.TextChanged 事件同步触发?

转载 作者:太空宇宙 更新时间:2023-11-03 14:15:05 24 4
gpt4 key购买 nike

平台: Silverlight 4/.NET 4

描述:

我有一个 ComboBox、一个 Textbox 和一个 NumericUpDown

<StackPanel Margin="10">
<ComboBox SelectionChanged="cmbChanged" Margin="3">
<ComboBoxItem Content="A" />
<ComboBoxItem Content="B" />
</ComboBox>
<TextBox x:Name="txt" TextChanged="txtChanged" Margin="3"/>
<CheckBox x:Name="chk" Checked="chkChecked" Unchecked="chkChecked" Content="Check box" Margin="3"/>
<ListBox x:Name="lst" Height="100" Margin="3"/>
</StackPanel>

列表用于调试目的。

复制:

请注意,TextBox.TextChangedCheckBox.CheckedCheckBox.UncheckedComboBox.SelectionChanged< 都有事件处理程序.

这里是处理程序:

private void cmbChanged(object sender, SelectionChangedEventArgs e)
{
lst.Items.Clear();
txt.Text = (sender as ComboBox).SelectedIndex.ToString();
chk.IsChecked = !chk.IsChecked;
}

private void txtChanged(object sender, TextChangedEventArgs e)
{
lst.Items.Add("Text Changed");
}

private void chkChecked(object sender, RoutedEventArgs e)
{
bool? chk = (sender as CheckBox).IsChecked;
lst.Items.Add("CheckBox Changed to " + chk);
}

问题:

在组合框的事件处理程序中,我在文本框中设置文本 BEFORE 设置复选框的选中状态。但是,如果您查看下图,您会发现 CheckBox.Checked 的事件处理程序在 TextBox.TextChanged 之前被调用。

TextBox.TextChanged occurs asynchronously

问题明显出在TextBox.TextChanged事件的异步执行上,as stated in the MSDN definition :

The TextChanged event is asynchronous. The event cannot be canceled.

我真的需要这些事件处理程序完全按照它们被更改的顺序执行

问题:有什么简单的方法可以实现我的需要吗?

最佳答案

也许直接调用您的业务逻辑片段可能更好,而不是依赖于事件处理程序。如果您不想在特定情况下触发该触发器,您可以随时删除和添加 EventHandler:

//Remove event handlers:
CheckBox.Checked -= chkChecked;
TextBox.TextChanged -= txtChanged;

//Call your business stuff here

//You can also 'safely' set values on your textbox and
//checkbox since they wont trigger events now.

//Re-add event handlers, so they react on user input again:
CheckBox.Checked += chkChecked;
TextBox.TextChanged += txtChanged;

关于c# - 如何使 Silverlight TextBox.TextChanged 事件同步触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6745155/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com