Wyrażenie dotyczące pojemności RichTextBoxa

0

Witam,tworzę własny Edytor tekstu,ale mam pewien problem:
Richtextbox ma wymiary dokładnie takie jak Kartka A4 wyrażone w pikselach.
Chciałbym aby program brał pod uwagę rozmiar czcionki (w tej chwili jeszcze czcionek nie dodałem) i przestawał przyjmować znaki,gdy tych będzie po prostu za dużo jak na stały rozmiar kartki.

Eksperymentowałem z takim wyrażeniem

Kartka.MaxLength = Kartka.Height * Kartka.Width;
 

Zmieniałem tu różne operatory artymetyczne w nadzieji,że trafię na ten właściwy,lecz tak sie nie stało.
Wie ktoś jakie wyrażenie tutaj będzie działać poprawnie ?

2

A jaki rozmiar ma kartka A4 w pikselach?

3

W ten sposób nie zrobisz ponieważ większość czcionek ma różną szerokość znaków i np. liter i zmieści się więcej niż w. Musiałbyś się "bawić" w mierzenie wielkości tekstu np. funkcją MeasureString ale to też było by trochę upierdliwe ponieważ w RichTextBox może być tekst różnie formatowany tzn. część tekstu taką a część taką czcionką.

1

Tak jak powiedział @kAzek, w ten sposób tego nie zrobisz.
Mój na razie taki luźny pomysł to sprawdzać czy pojawił się VerticalScrollbar jeśli się pojawi to cofnąć jedną literę.

@Riw albo coś takiego:

class MyRTB : RichTextBox
    {
        protected override void OnVScroll(EventArgs e)
        {
            this.Select(this.Text.Length - 1, this.Text.Length);
            this.SelectedText = String.Empty;
            this.ScrollBars = RichTextBoxScrollBars.None;
            this.ScrollBars = RichTextBoxScrollBars.Vertical;
            base.OnVScroll(e);
        }
    }

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