È possibile mostrare/nascondere la barra di scorrimento in una casella di testo solo quando il numero di righe nella casella di testo è superiore al numero di righe visualizzate?Visualizza la barra di scorrimento nella casella di testo quando i contenuti superano i limiti C#
risposta
Si consiglia di utilizzare l'RichTextBox - ha quel comportamento costruito nel
Ahh grazie Austin. A volte le soluzioni più ovvie sono le migliori :) – Anders
Non dimenticare di aggiungere la proprietà ScrollViewer.VerticalScrollBarVisibility = "Auto" a RichTextBox – Smile4ever
Public Class TextBoxScrollbarPlugin
Private WithEvents mTarget As TextBox
''' <summary>
''' After the Handle is created, mTarget.IsHandleCreated always returns
''' TRUE, even after HandleDestroyed is fired.
''' </summary>
''' <remarks></remarks>
Private mIsHandleCreated As Boolean = False
Public Sub New(item As TextBox)
mTarget = item
mIsHandleCreated = mTarget.IsHandleCreated
End Sub
Private Sub Update()
If Not mTarget.IsHandleCreated Then
Return
ElseIf Not mIsHandleCreated Then
Return
End If
Dim textBoxRect = TextRenderer.MeasureText(mTarget.Text,
mTarget.Font,
New Size(mTarget.Width, Integer.MaxValue),
TextFormatFlags.WordBreak + TextFormatFlags.TextBoxControl)
Try
If textBoxRect.Height > mTarget.Height Then
mTarget.ScrollBars = ScrollBars.Vertical
Else
mTarget.ScrollBars = ScrollBars.None
End If
Catch ex As System.ComponentModel.Win32Exception
'this sometimes throws a "failure to create window handle"
'error.
'This might happen if the TextBox is unvisible and/or
'to small to display a toolbar.
If mLog.IsWarnEnabled Then mLog.Warn("Update()", ex)
End Try
End Sub
Private Sub mTarget_HandleCreated(sender As Object, e As System.EventArgs) Handles mTarget.HandleCreated
mIsHandleCreated = True
End Sub
Private Sub mTarget_HandleDestroyed(sender As Object, e As System.EventArgs) Handles mTarget.HandleDestroyed
mIsHandleCreated = False
End Sub
Private Sub mTarget_SizeChanged(sender As Object, e As System.EventArgs) Handles mTarget.SizeChanged
Update()
End Sub
Private Sub mTarget_TextChanged(sender As Object, e As System.EventArgs) Handles mTarget.TextChanged
Update()
End Sub
End Class
Private mPlugins As New List(Of Object)
Private Sub Form_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
mPlugins.Add(New TextBoxScrollbarPlugin(txtBoxOne))
mPlugins.Add(New TextBoxScrollbarPlugin(txtBoxTwo))
mPlugins.Add(New TextBoxScrollbarPlugin(txtBoxThree))
End Sub
Per coloro che devono utilizzare Textbox (come ho dovuto fare poiché è un controllo personalizzato) sopra la risposta sembra funzionare bene. Supponevo che dovessi sostituire il + con OR per renderlo bit a bit e ho reso il wordbreak condizionale sul valore textbox.wordwrap. Spero possa aiutare. – Tim
Grazie manichino, funziona.! Ecco la versione a corto di risposta manichino in C#
chiamata questo codice alla fine del vostro SizeChanged e TextChanged gestori:
Size textBoxRect = TextRenderer.MeasureText(
this.YourTextBox.Text,
this.YourTextBox.Font,
new Size(this.YourTextBox.Width, int.MaxValue),
TextFormatFlags.WordBreak | TextFormatFlags.TextBoxControl);
try
{
this.YourTextBox.ScrollBars = textBoxRect.Height > this.YourTextBox.Height ?
ScrollBars.Vertical :
ScrollBars.None;
} catch (System.ComponentModel.Win32Exception)
{
// this sometimes throws a "failure to create window handle" error.
// This might happen if the TextBox is unvisible and/or
// too small to display a toolbar.
}
ho avuto tnimas soluzione di lavoro in VB. Funziona abbastanza bene come scritto e non ho visto gli errori.
Private Sub TextBoxSizeChanged(sender As Object, e As EventArgs) Handles Me.SizeChanged
Dim textBoxRect As Size = TextRenderer.MeasureText(TextBox.Text, TextBox.Font, New Size(TextBox.Width, Integer.MaxValue), TextFormatFlags.WordBreak Or TextFormatFlags.TextBoxControl)
Try
TextBox.ScrollBar = If(textBoxRect.Height > TextBox.Height, ScrollBars.Vertical, ScrollBars.None)
Catch ex As Exception
'handle error
End Try
End Sub
- 1. Visualizza i contenuti di seguito EspandibileListView
- 2. Windows Phone contenuti 8 scorrimento di testo
- 3. C# - come impostare il testo nella casella di testo per mostrare un suggerimento quando la casella di testo è vuota?
- 4. Karma: notifiche di sistema quando i test superano o falliscono
- 5. Barra di scorrimento a scorrimento multiplo per i moduli Windows
- 6. Rileva Javascript barra di scorrimento nell'area testo
- 7. Limiti di altezza per la barra di scorrimento verticale del browser
- 8. html selezionare la barra di scorrimento
- 9. grilletto infinito di scorrimento quando non c'è abbastanza contenuti per la barra di scorrimento a pagina carico
- 10. In che modo le pagine web come Statigram non superano i limiti tariffari dell'API di Instagram
- 11. Come smettere di ridimensionare la tabella quando i contenuti crescono?
- 12. Come forzare la barra di scorrimento verticale per mostrare se i risultati di AutoCompleteTextView possono scorrere?
- 13. Casella di testo multilinea con scorrimento verticale automatico
- 14. Inserimento di testo nella casella di testo di un'altra applicazione
- 15. Come posso associare una casella di elenco a contenuti selezionati in una casella di testo?
- 16. Visualizza i contenuti dell'array nel debugger Qt Creator
- 17. C# - Scrittura di un registro utilizzando una casella di testo
- 18. Rendere visibile la barra di scorrimento verticale
- 19. Scorrimento nella casella di autocomplete di vim con i tasti di spostamento jk
- 20. Mostra sempre la barra di scorrimento nella tabella Bootstrap-responsive
- 21. La barra di scorrimento non viene visualizzata nella pagina web
- 22. Barra di scorrimento textarea
- 23. Barra di scorrimento su un'etichetta
- 24. Apri il file nella casella di testo RT con C#
- 25. Come disabilitare la barra di scorrimento predefinita per i textareas in IE8?
- 26. Come ottenere la barra di scorrimento nel Pannello in VB.Net?
- 27. Scappare i limiti di un contenitore div
- 28. Visualizza i caratteri Unicode nella console Xcode?
- 29. Visualizza i valori dei campi della tabella Mysql nella casella di selezione
- 30. UITableView Barra di scorrimento personalizzata
Sfortunatamente no. È possibile impostare le barre di scorrimento su orizzontale, verticale o entrambe ma non per mostrare/nascondere quando necessario. – Anders
che è solo nella casella di testo bacic - prova RichTextBox – Cullub