C# 事件“;TextChanged";它被多次发射

C# 事件“;TextChanged";它被多次发射,c#,wpf,richtextbox,C#,Wpf,Richtextbox,我在这里问了一个问题,如何垂直集中richtextbox: 以下代码: XAML: <Border BorderBrush="Black" BorderThickness="1" Margin="10,51,385,14.2" Grid.ColumnSpan="2"> <Grid x:Name="Grid_Principal" Height="285" Background="Black" > <Grid.Ro

我在这里问了一个问题,如何垂直集中richtextbox:

以下代码:

XAML:

<Border BorderBrush="Black" BorderThickness="1" Margin="10,51,385,14.2" Grid.ColumnSpan="2">
            <Grid x:Name="Grid_Principal" Height="285" Background="Black" >
                <Grid.RowDefinitions>
                    <RowDefinition Height="*"/>
                    <RowDefinition Height="auto"/>
                    <RowDefinition Height="*"/>
                </Grid.RowDefinitions>
                <ScrollViewer x:Name="scrollviewer" Grid.Row="1" MaxHeight="285" VerticalScrollBarVisibility="Auto" Margin="10,0.4,0.4,0.2">
                    <RichTextBox
                        x:Name="richtextbox" 
                        Width="332.4"
                        VerticalAlignment="Top" 
                        FontSize="14" 
                        VerticalContentAlignment="Center" 
                        HorizontalContentAlignment="Center" 
                        UseLayoutRounding="False" 
                        VerticalScrollBarVisibility="Auto" 
                        Block.TextAlignment="Center"
                        Grid.ColumnSpan="2" 
                        HorizontalAlignment="Left" 
                        BorderThickness="0" 
                        Background="{x:Null}" 
                        Foreground="White" 
                        TextChanged="Richtextbox_TextChanged">
                        <FlowDocument>
                            <Paragraph>
                                This is flow content and you can
                                <Bold>edit me!</Bold>
                            </Paragraph>
                        </FlowDocument>
                    </RichTextBox>
                </ScrollViewer>
            </Grid>
        </Border>
private void Window_Loaded(object sender, RoutedEventArgs e)
{
    richtextbox.AppendText("Hello world, I'm writing in C#");
}

private void Richtextbox_TextChanged(object sender, TextChangedEventArgs e)
{
   //This event is fired multiple times
}
TextChanged
事件被激发数次,在调试器模式下完成,在此处激发6次


我想在文本更改时调用一个函数,有什么解决方案吗?

如前所述,每次击键时文本都会更改,因此每次都会触发事件

实际上,你必须决定你想要什么样的行为。我通常做的一些事情:

需要“回车”键确认文本,然后(伪代码):

要更改焦点以确认文本:

LostFocus="Richtextbox_TextChanged"> (XAML), 
doWhatYouWannaDo(); (CODE)
代码将放置在Richtextbox_TextChanged()的主体中,或者以您想要的方式命名


编辑:您还可以在经过一段时间后(即在计时器事件中)验证文本。但我不喜欢这个,因为它与用户的交互是不确定的。

TextChanged
每次文本框中的文本发生变化时都会触发(如果键入“hello”,则会触发5次,每个字符一次);这就是它的工作原理。@Josh这部分我知道,请看我的帖子,我编辑过。LostFocus事件帮助了我。
LostFocus="Richtextbox_TextChanged"> (XAML), 
doWhatYouWannaDo(); (CODE)