skok do konkretnej linii tekstu w textboxie

0

Witam, mam pytanie.

Gdzie i jak mogę szukać albo czego, żeby zrobić za po mocą przycisku ( buttona ) przejście tekstu w textboxie do połowy strony, ewentualnie jeśli wyświetla mi np linie 1-50 to po przycisku np: enter / spacja / s przechodzi mi automatycznie do ostatniej linii, i wyświetla tekst linii 50-100 ?

Gdzie mogę coś takiego znaleźć albo czego szukać ?

Wszedłem w coś takiego jak:

Textbox1.lines - i teraz tutaj mogę coś znaleźć, żeby przenosiło mnie ?

0

Musisz przestudiować komunikaty. Bo kolekcja Lines służy do dodawania tekstu i operacji na samym tekście. W tym nie można przenosić kursora w dokładne miejsce.

0

a co dadzą mi komunikaty jak ja chce tak jakby na textboxie pracować ?

0

nvm, można zliczać pozycję dosłowną tekstu i scrollować do wybranego miejsca

void JumpToLine(int line)
{
    textBox1.SelectionStart = textBox1.Lines.Take(line).Sum(s => s.Length); // w moim sercu tylko LINQ
    textBox1.ScrollToCaret();
}
0

Ewentualnie jak zrobić żeby kursor przesuwał się np za pomocą spacji o 10 linii w dół ?!

0

Liczysz całkowitą ilość linii, potem tworzysz licznik linii, zwiększasz o 10 i podstawiasz do funkcji wyżej. :) Całą operację podpinasz pod zdarzenie KeyDown (albo KeyPress).
Jeśli chcesz przejść do środka treści to:

JumpToLine(textBox1.Lines.Length / 2);
0

Dzięki będę kombinował, bo muszę rozkminić jak zrobić liczenie linii, jak zrobić licznik i jak zwiększyć o 10 :D ale będę kminił dzięki za pomoc

0

Oto całe rozwiązanie (można podstawić pod inne zdarzenie ten cały kod liczący :P)

using System;
using System.Linq;
using System.Windows.Forms;

namespace ScrollTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private int _linesCounter;

        void JumpToLine(int line)
        {
            textBox1.SelectionStart = textBox1.Lines.Take(line).Sum(s => s.Length);
            textBox1.ScrollToCaret();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (_linesCounter + 10 < textBox1.Lines.Length)
            {
                _linesCounter += 10;
                JumpToLine(_linesCounter);
            }
        }
    }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0