2016-10-05 2 views
0

Ich habe ein mehrzeiliges Textfeld, das ich mit Text (beim Laden des Formulars) aus einer TXT-Datei befülle. Ich versuche, die vertikale Schriftrolle auf irgendeine Weise nach unten zu bewegen (da es einige Zeilen gibt).Mehrzeiliges Textfeld verschiebt den Cursor nicht an das Ende

Ich habe versucht, anhängende Text, ScrollToCaret verwenden, ändern die Auswahl und mehrere andere Möglichkeiten, die ich gefunden habe, aber keine von ihnen funktionieren.

Ich habe versucht, alles, was ich gefunden habe, an das textChanged-Ereignis zu verschieben und es direkt nach dem Füllen des Textfelds zu platzieren, aber es scrollt immer noch nicht nach unten.

Immer wenn ich irgendetwas benutze, das ich möglicherweise arbeiten könnte, ist die Position immer noch am Anfang des Textfelds Text.

Irgendwelche Vorschläge ??

Vielen Dank im Voraus

Dies ist der Code, den ich den Text in die Textbox, um Ihren Code

if (File.Exists(path)) 
{ 

    txtLog.AppendText(File.ReadAllText(path)); 
    File.SetAttributes(path, File.GetAttributes(path) | FileAttributes.Hidden | FileAttributes.ReadOnly); 

} 
+0

'box.SelectionStart = box.Text.Length;'? –

+0

versuchte das auch. Sorry, dass ich nicht alles erwähnen konnte, was ich versuchte, aber ich konnte mich nicht an alles erinnern – GokusGString

+0

Also, was passiert, wenn du es benutzt? Zeigen Sie möglicherweise den Code, in dem Sie den Text hinzufügen ... –

Antwort

0

Ändern TextBox hinzuzufügen.

+0

Weiß nicht, warum es mit einer normalen Textbox nicht funktionieren würde, aber das funktionierte. Danke an alle =) – GokusGString

0

Fügen Sie die folgende Methode hinzufügen bin mit. Und stellen Sie sicher using System.Runtime.InteropServices; an der Spitze des Codes RichTextBox sollte Ihr Problem lösen

[DllImport("user32.dll", CharSet = CharSet.Auto)] 
     private static extern int SendMessage(IntPtr hWnd, int wMsg, IntPtr wParam, IntPtr lParam); 
     private const int WM_VSCROLL = 277; 
     private const int SB_PAGEBOTTOM = 7; 

     public static void ScrollToBottom(TextBox textBox) 
     { 
      SendMessage(textBox.Handle, WM_VSCROLL, (IntPtr)SB_PAGEBOTTOM, IntPtr.Zero); 
     } 

und ändern Sie den Code zu diesem

if (File.Exists(path)) 
{ 

    txtLog.AppendText(File.ReadAllText(path)); 
    ScrollToBottom(txtLog); 
    File.SetAttributes(path, File.GetAttributes(path) | FileAttributes.Hidden | FileAttributes.ReadOnly); 

} 
+0

Leider funktioniert das auch nicht – GokusGString

+0

Ich aktualisierte meine Antwort –

+0

Ich überprüfte einfach seine normale Textbox, um mehrzeilig zu sein – GokusGString

0

Wenn Sie noch eine regelmäßige TextBox funktioniert das folgende verwenden möchten sollten:

txtLog.AppendText(File.ReadAllText(path)); 
Dispatcher.InvokeAsync(txtLog.ScrollToEnd, DispatcherPriority.Background); 
Verwandte Themen