Как да принудите режима на вмъкване в WPF RichTextBox

Някой знае ли как да контролира режима на вмъкване на WPF RichTextBox. Искам да принудя RichTextBox винаги да бъде в режим на презаписване, а не на вмъкване.


person Community    schedule 23.05.2009    source източник


Отговори (1)


За съжаление изглежда няма документиран начин това да се направи. Единственият начин, който знам, е да използвам отражение, както по-долу, но тази техника има достъп до вътрешната работа на RichTextBox. Той работи в текущите версии на WPF, но няма гаранция, че ще продължи да работи и занапред, така че го използвайте на свой собствен риск.

PropertyInfo textEditorPropertyInfo = typeof(RichTextBox).GetProperty("TextEditor", BindingFlags.NonPublic | BindingFlags.Instance);

        if (textEditorPropertyInfo == null)
            throw new NotSupportedException("SetOverwriteable not support on this platform");

        object textEditor = textEditorPropertyInfo.GetValue(this, null);
        PropertyInfo overtypeModePropertyInfo = textEditor.GetType().GetProperty("_OvertypeMode", BindingFlags.NonPublic | BindingFlags.Instance);

        if (overtypeModePropertyInfo == null)
            throw new NotSupportedException("SetOverwriteable not support on this platform");

        overtypeModePropertyInfo.SetValue(textEditor, true, null);

Горното трябва да се случи след конструктора.

person Kid Kaneda    schedule 23.05.2009