2010-12-27 10 views
7

Mam RichTextBox w programie WInForms, który owija każdą linię dłuższą niż 3510 znaków. Mam ustawioną wartość WordWrap na wartość false, więc wszystkie linie poniżej tej długości rozciągają się normalnie bez owijania. To, co robiłem, aby to obejść, to ustawić RightMargin na dużą liczbę, na przykład 100 000, która wciąż działa, ale teraz, gdy jestem w systemie Windows 7, a nie XP, dostaję pasek przewijania, który przewija się tak, jakby pole tekstowe miało linie o tej dużej długości, gdy nie ma..NET - Long Line w RichTextBox Zawinięte po 3510 znaków

Aby zreplikować, po prostu utwórz program WinForm z RichTextBox i Button. W kliknij zdarzenie przycisk jest umieścić następujące:

 StringBuilder sb = new StringBuilder(); 
     for (int i = 0; i < 3511; i++) 
      sb.Append('A'); 
     richTextBox1.Text = sb.ToString(); 

Po patrz opakowanie, zmień rightMargin z pola tekstowego do 100000, i zauważ, pasek przewijania, który pojawia się jeszcze przed uruchomieniem programu (tylko w dniach 7 i prawdopodobnie Widok). Linia nie jest już opakowana, ale chcę, aby pasek przewijania działał tylko na tekście w polu, a nie na określonej wcześniej długości.

+2

Czy nie ma lepszego sposobu na zszorstkowanie tego kota, a następnie zmuszenie użytkownika do przewijania tak dużo, aby wyświetlić dane? –

+1

I repro. Wygląda celowo, * bardzo * drogie do naprawienia. –

+0

@Hans Tak, zrobiłem tak, jak się wydaje na podstawie rozmiaru czcionki ... możesz uzyskać więcej/mniej niż 3510 w zależności od właściwości czcionki, w przeciwieństwie do wartości twardej. –

Odpowiedz

7

Możesz ustawić właściwą marżę richTextBox na szerokość ciągu? Podobny do tego:

+0

Dzięki! Miałem nadzieję na coś więcej niż tylko ustawienie, ale mogę przejrzeć każdą linię w polu tekstowym, znaleźć najdłuższy i po prostu ustawić na to. –