Avatar
roks
Člen
Avatar
roks:

Zdravím, vedel by mi niekto poradiť, ako spraviť, aby keď stlačím Enter v RichTextBox-e aby mi zistilo, či v predošlom riadku bol použitý na začiatku riadku tab, ak áno tak koľkokrát a aby mi po Enter-i spravilo v ďalšom riadku toľko "tabov" koľko potrebujem. Teda stačí mi, iba ako zistím, že koľko tabov sa v predošlom riadku nachádza a pridal to do kódu. :)

 
Odpovědět 23.9.2013 20:05
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na roks
Jan Vargovský:
private void richTextBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)Keys.Enter)
            {
                int tabCount = 0;
                int line = richTextBox1.GetLineFromCharIndex(richTextBox1.SelectionStart) - 1;
                string s = richTextBox1.Lines[line];
                string tabs = string.Empty;
                while (tabCount < s.Length)
                {
                    if (s[tabCount] != '\t')
                        break;
                    tabCount++;
                }
                var tempLines = richTextBox1.Lines;

                for (int i = 0; i < tabCount; i++)
                    tabs += "\t";
                tempLines[line +1] = tabs + tempLines[line+1];
                richTextBox1.Lines = tempLines;

                int shift = 0;
                for (int i = 0; i <= line; i++)
                {
                    shift += richTextBox1.Lines[i].Length +1;
                }

                richTextBox1.SelectionStart = shift + richTextBox1.Lines[richTextBox1.Lines.Count() -1].Length;
            }
        }

Není to geniální, ale musíš si to upravit podle možností, dá se to napsat na pár řádků, ale když odřádkováváš třeba uprostřed textu + za tím textem něco je, tak už je to trošku složitější. Snad pomůže .)

 
Nahoru Odpovědět 23.9.2013 21:33
Avatar
roks
Člen
Avatar
Odpovídá na Jan Vargovský
roks:

Vďaka, už si to pretvorím podľa seba :)

 
Nahoru Odpovědět 23.9.2013 21:54
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 3 zpráv z 3.