[vb.net]

Hallo,

wenn ich eine Textbox automatisch scrollen lassen will, dann wird aber nicht gescrollt.
Code:
'
' Erstellt mit SharpDevelop.
' Benutzer: Markus
' Datum: 06.05.2010
' Zeit: 20:03
' 
' Sie können diese Vorlage unter Extras > Optionen > Codeerstellung > Standardheader ändern.
'
Imports System.IO

Public Partial Class MainForm
	Dim cGame As New clsGame()
	Dim dirent As String = "/local/"
	
	Public Sub New()
		' The Me.InitializeComponent call is required for Windows Forms designer support.
		Me.InitializeComponent()
		
		'
		' TODO : Add constructor code after InitializeComponents
		'
	End Sub
	
	Sub ToolInfoClick(ByVal sender As Object, ByVal e As EventArgs)
		txtKonsole.Text = txtKonsole.Text & Environment.NewLine & "Geschrieben von Markus Büttner"
	End Sub
	
	Sub MainFormLoad(ByVal sender As Object, ByVal e As EventArgs)
		txtAusgabe.Text = "Hacking Spiel Konsole" & Environment.NewLine & dirent
		toolPosteingang.Text = "Posteingang(1)"
		'txtKonsole.Cursor.Position = New Point(3,10)
	End Sub
	
	Sub ToolPosteingangClick(ByVal sender As Object, ByVal e As EventArgs)
		Dim strDir As String = "."
		MessageBox.Show(cGame.GetEmail("1"))
		toolPosteingang.Text = "Posteingang (0)"
		txtKonsole.Enabled = True
		btnOk.Enabled = True
	End Sub
	
	Sub BtnOkClick(ByVal sender As Object, ByVal e As EventArgs)
		txtAusgabe.Text &= Environment.NewLine & "<" & txtKonsole.Text & ">" 
		If (txtKonsole.Text.IndexOf("ping") <> -1) Then
			System.Threading.Thread.Sleep(1000)
			txtAusgabe.Text &= cGame.ping(txtKonsole.Text.Replace("ping ",""))
			txtAusgabe.ScrollToCaret()
		Else
			txtAusgabe.Text &= Environment.NewLine & "Unbekannter Befehl"
		End If
		txtAusgabe.Text &= Environment.NewLine & Environment.NewLine & dirent
	End Sub
End Class
 
Was soll allgemein erstmal passieren? Wenn OK geklickt wird, wird einmal dein Ping ausgewertet und in textAusgabe ausgegeben. Was soll da scrollen? Wenn du oft genug OK geklickt hast, oder soll das mit dem Ping im Sekundentakt gemacht werden...?
 
Ja,
wenn ich auf OK klicke und der Text geht über den Rand der Textbox hinaus, dann will ich sie automatisch scrollen lassen, nur geht das mit ScrollToCaret() anscheinend nicht.
 
Du meinst, der Text geht nach rechts raus? Dann wäre für dich nämlich nicht scrollen sondern Textumbruch (WordWrap) das, was du suchst
 
Das Problem ist nur folgendes: Die Textbox ist deaktiviert, der Nutzer kann also nichts hineinschreiben. Jetzt wird aber durch eine einzeilige Textbox Befehle eingegeben, worauf diese in der deaktivierten erscheinen (siehe Anhang game.zip). Und wenn die Befehle über die Höhe hinausgehen, dann soll automatisch nach unten gescrollt werden.
 
Ich habe mal kurz die game.zip angesehen und mir ist da folgendes aufgefallen:

Die Textbox scheint deaktiviert zu sein.
Die Scrollbar funktioniert nicht.

Ich kann das hier gerade nicht testen, aber soweit ich es gerade gelesen habe, geht die Scrollbar nicht, wenn die Textbox deaktiviert ist. Vorschlag wäre da, die zwar zu aktivieren, aber readonly zu machen.
Ich denke, solange du nicht manuell scrollen kannst, wird es auch automatisch nicht funktionieren.
 
Jetzt habe ich das auf Readonly gestellt, wird aber immer noch nicht gescrollt. Ich habe es auch schon mit TextChanged probiert, ging auch nicht.
 
Hmmm, ich kann erst in den nächsten Tagen an dem anderen Rechner mal testen. Mal gucken, ob mir dann was auffällt, was falsch sein kann.
 
Folgender Beispiel-Code funktioniert bei mir:
Code:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        For i = 0 To 50
            TextBox1.Text = TextBox1.Text & vbCr & Chr(10) & i
            TextBox1.SelectionStart = TextBox1.Text.Length
            TextBox1.ScrollToCaret()
        Next i
    End Sub

//EDIT
Die Textbox hat die Eigenschaften WordWrap=True, Enabled=True, ReadOnly=True, Multiline=True und Scrollbars=Vertical.
 
Zuletzt bearbeitet:
Zurück
Oben