WPF裡TextBox顯示行號
阿新 • • 發佈:2020-12-23
參考文件:
https://stackoverflow.com/questions/15610940/show-linenumbers-from-the-richtextbox-in-wpf
效果:
前臺:
<Grid> <Border BorderBrush="Gray" BorderThickness="1"> <ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled"> <DockPanel> <TextBlock x:Name="LineNumberTextBlock" Background="#CFCFCF" Foreground="#008497" /> <TextBox x:Name="InfoTbx" AcceptsReturn="True" BorderThickness="1 0 0 0" VerticalScrollBarVisibility="Disabled" TextChanged="InfoTbx_OnTextChanged"> </TextBox> </DockPanel> </ScrollViewer> </Border> </Grid>
後臺:
publicTextBoxWithLineNumber() { InitializeComponent(); InfoTbx.Loaded += delegate { //當載入後,行號才有效 InfoTbx_OnTextChanged(InfoTbx, null); }; } public string GetInputInfo() { return InfoTbx.Text; } public void SetIsReadOnly(bool isReadOnly) { InfoTbx.IsReadOnly = isReadOnly; } public void SetTextInfo(string txt) { InfoTbx.Text = txt; } private void InfoTbx_OnTextChanged(object sender, TextChangedEventArgs e) { var textBox = sender as TextBox; var x = string.Empty; for(var i = 0; i < textBox.LineCount && i < 2000; i++) { x += i + 1 + "\n"; } LineNumberTextBlock.Text = x; }
原始碼:
https://files.cnblogs.com/files/lizhijian/2020-12-23-WPF%E9%87%8CTextBox%E6%98%BE%E7%A4%BA%E8%A1%8C%E5%8F%B7.zip