是否有可用的控件在文本框中左侧或右侧显示行号?如果不是如何创建像这样的控件?
答案 0 :(得分:3)
答案 1 :(得分:0)
对于 wpf,我通过将以下内容添加到 xaml 中:-
<Grid Margin="10">
<TextBox x:Name="TextBoxLineNumbers" FontFamily="Courier New" FontSize="18" IsReadOnly="True" TextAlignment="Right" Text="" Foreground="#50000000" Background="Transparent" Margin="0" Padding="0" HorizontalAlignment="Left" Width="60" BorderThickness="1,1,0,1"/>
<TextBox VerticalScrollBarVisibility="Visible" AcceptsReturn="True" ScrollViewer.ScrollChanged="TextBox_ScrollChanged" x:Name="TextBoxResult" FontFamily="Courier New" FontSize="18" TextAlignment="Left" Text="" Foreground="Black" Background="Transparent" Margin="60,0,0,0" Padding="0" BorderThickness="0,1,1,1"/>
</Grid>
到 xaml.cs 文件:-
private void SetUpLines(string data)
{
int noLines = string.IsNullOrEmpty(data) ? 0 : data.Split('\n').Length;
StringBuilder sb = new StringBuilder();
for (int i = 1; i <= noLines; i++)
{
sb.AppendLine(i.ToString());
}
TextBoxLineNumbers.Text = sb.ToString();
TextBoxResult.Text = data??"";
}
private void TextBox_ScrollChanged(object sender, ScrollChangedEventArgs e)
{
TextBoxLineNumbers.ScrollToVerticalOffset(TextBoxResult.VerticalOffset);
}
调用 SetUpLines 来填充 TextBox。请注意,这使用固定大小的字体并且不进行换行,我不想要那样。我知道这是一个老问题,但我在其他任何地方都没有看到简单的答案。