Avatar
beats.omni
Člen
Avatar
beats.omni:

Snažím se vytvořit jednoduchý textový editor z RichTextBoxu ve WPF, se změnou velikosti písma a fontu. Našel jsem tady na to téma nedořešenou diskuzi. Díval jsem se i různě po netu, ale nikde jsem nenašel řešení. Dal jsem něco málo dohromady, ale pořád to není ono.

Napřiklad, když se chci vrátit v nějakém řádku například za první slovo, tak musím kliknout třikrát, než se mi tam objeví kurzor. Když tam pak chci třeba začít psát větším písmem, tak se mi kurzor zase přesune na konec. Už z toho pomalu šílím.

Mohl by někdo poradit.

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        fontSizeComBox.ItemsSource = new List<double>() { 8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 36, 48, 72 };
        fontSizeComBox.SelectedIndex = 4;
        rtBox.AcceptsTab = true;
        rtBox.AcceptsReturn = true;
        rtBox.VerticalScrollBarVisibility = ScrollBarVisibility.Visible;
    }

    private void fontSizeComBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        if (rtBox.Selection.IsEmpty)
        {
            Run r = new Run() { FontSize = (double)fontSizeComBox.SelectedValue };
            rtBox.CaretPosition.Paragraph.Inlines.Add(r);
            rtBox.CaretPosition = r.ElementStart;
        }
        else
        {
            rtBox.Selection.ApplyPropertyValue(Inline.FontSizeProperty, fontSizeComBox.SelectedItem);
        }
        rtBox.Focus();
    }

    private void rtBox_SelectionChanged(object sender, RoutedEventArgs e)
    {
        object tempValue = rtBox.Selection.GetPropertyValue(TextElement.FontSizeProperty);
        fontSizeComBox.SelectedValue = tempValue;
    }
}
Editováno 11.4.2015 10:42
 
Odpovědět  -2 11.4.2015 10:38
Avatar
rwn
Člen
Avatar
Odpovídá na beats.omni
rwn:

Já bych řekl, že problém je v tomto bloku:

Run r = new Run() { FontSize = (double)fontSizeComBox.SelectedValue };
rtBox.CaretPosition.Paragraph.Inlines.Add(r);
rtBox.CaretPosition = r.ElementStart;

Ty problémy, co zde zminuješ zmizely, když jsem si tuto část zakomentoval. Nejsem si úplně jistej, protože s tím Run a CaretPosition nemám zkušenosti, ale řekl bych, že to funguje tak, že když tam přidáš do rtBoxu onen element, tak se přidá na konec, na jehož pozici se odkazuješ, proto to skáče na konec. Jinak mě osobně to někdy i spadlo v této části..

Editováno 15.4.2015 15:17
Nahoru Odpovědět  -2 15.4.2015 15:16
Co můžeš naprogramovat dnes, neodkládej na zítřek.
Avatar
beats.omni
Člen
Avatar
Odpovídá na rwn
beats.omni:

Tam je určitě problém :D Ale já právě nevím, co s tím. Jde to vůbec udělat?

 
Nahoru Odpovědět  -2 30.4.2015 8:26
Avatar
beats.omni
Člen
Avatar
Odpovídá na Člen
beats.omni:

Ten odkaz je jen obyčejný notepad. Ten ve WPF udělat umím. Co neumím, je textový editor, který se bude chovat podobně jako WordPad. Notepadů jsou všude hromady.

 
Nahoru Odpovědět  -1 13.5.2015 13:17
Avatar
Člen
Člen
Avatar
Odpovídá na beats.omni
Člen:

Pošli mi tvoje kódy - pozriem sa na to :)

Nahoru Odpovědět 14.5.2015 7:24
...
Avatar
Majkel
Člen
Avatar
Odpovídá na beats.omni
Majkel:

Ahoj, jelikož jsem tady taky neúspěšně řešil wordpad like editor pro WPF, tak by mě zajímalo, jestli jsi s tím někam pokročil?

 
Nahoru Odpovědět 8.6.2015 18:18
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.