我在这里问了一个如何垂直集中richtextbox的问题:here
关注代码:
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>
C#:
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次。
我想在文本更改时调用函数,任何解决方案?
答案 0 :(得分:0)
正如已经说过的那样,每次按键时文本都会发生变化,因此每次都会触发事件。
您实际上必须决定您想要的行为。我经常做的一些事情:
旺旺&#34;输入&#34;确认文本的关键,然后(伪代码):
KeyDown="Richtextbox_TextChanged"> (XAML)
if (e.Key.Equals(Key.Return)) doWhatYouWannaDo(); (CODE)
希望焦点更改以确认文字:
LostFocus="Richtextbox_TextChanged"> (XAML),
doWhatYouWannaDo(); (CODE)
其中CODE将放置在Richtextbox_TextChanged()的主体内部,或者您想要为其命名。
编辑:您还可以做的是在一段时间过后(即在计时器事件中)验证文本。但我不喜欢那个,因为它以某种方式与用户进行了不确定的互动。