読者です 読者をやめる 読者になる 読者になる

プログラマーな日々

プログラマー兼SEです。好きなツール:WorkFlowy、好きな言語:C#、好きなAWSのサービス:EMR。

RichTextBoxのマークアップと各要素のオフセット

.NET WPF

アプリ実行

入力


[Ctrl + B]で太字にする


「は」のオフセットは10


マークアップと各要素のオフセット

開始要素と終了要素が含まれるためオフセットが発生します。

マークアップ
オフセット 0 1 2 3 4 5 6 7 8 9 10 11 12

ソースコード

App.xaml
<Application x:Class="WpfApplication2.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="MainWindow.xaml">
</Application>
MainWindow.xaml
<Window x:Class="WpfApplication2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="800">
    <RichTextBox Name="richTextBox" FontSize="24" />
</Window>
MainWindow.xaml.cs
using System.Windows;

namespace WpfApplication2 {
    public partial class MainWindow : Window {
        public MainWindow() {
            InitializeComponent();

            this.richTextBox.SelectionChanged += (s, e) => {
                this.Title = this.richTextBox.Document.ContentStart.GetOffsetToPosition(
                                this.richTextBox.CaretPosition).ToString();
            };

        }
    }
}