¿Es posible mostrar/ocultar la barra de desplazamiento en un cuadro de texto solo cuando el número de líneas en el cuadro de texto es mayor que el número de líneas?Mostrar barra de desplazamiento en el cuadro de texto cuando el contenido está fuera de los límites C#
Respuesta
Considere el uso de la RichTextBox - tiene que el comportamiento construida en
Ahh gracias Austin. A veces las soluciones más obvias son las mejores :) – Anders
No olvides agregar la propiedad 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
Para aquellos que deben usar Textbox (como tuve que hacer ya que es un control personalizado) lo anterior la respuesta parece funcionar bien. Supuse que tenía que reemplazar el + con O para hacerlo en bit e hice el wordbreak condicional en el valor de textbox.wordwrap. Espero que ayude. – Tim
Gracias maniquí, funciona.! Aquí la versión corta de la respuesta simulada en C#
Llame a este código al final de su SizeChanged y TextChanged manipuladores:
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.
}
yo tengo tnimas solución de trabajo en VB. Funciona bastante bien como está escrito y no he visto los errores.
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. Mostrar el contenido de wpf sobre/fuera de los límites de la ventana principal
- 2. C#: cómo configurar el texto en el cuadro de texto para mostrar una pista cuando el cuadro de texto está vacío?
- 3. UIView ocultar vistas de niños cuando está fuera de límites
- 4. Mostrar control dentro del control de usuario fuera de los límites de su elemento primario
- 5. problema CSS - barra de desplazamiento horizontal se esconde el contenido
- 6. Detener barra de desplazamiento de empujar el contenido
- 7. ¿Cómo mostrar searchResultsTableView cuando la barra de búsqueda está activada?
- 8. Ocultar en el teclado iOS cuando el usuario hace clic fuera de un cuadro de texto
- 9. Cómo mostrar siempre la barra de desplazamiento
- 10. Flex: Prevenir la barra de desplazamiento de cubrir el contenido cuando se visualizan automáticamente
- 11. El cuadro de texto multilínea acoplado está cubierto por StatusStrip
- 12. Java Arrays Index fuera de los límites
- 13. Cambiar contenido de pegado en el cuadro de texto
- 14. Dibujo fuera de los límites de UITableViewCell
- 15. Mostrar contenido en el título al desbordamiento de texto
- 16. ¿Cómo hacer que el desplazamiento automático de JTextPane solo se realice cuando la barra de desplazamiento está en la parte inferior y el bloqueo de desplazamiento está desactivado?
- 17. cómo mostrar una barra de desplazamiento horizontal
- 18. ArrayList índice fuera de los límites
- 19. Barra de desplazamiento Textarea
- 20. Div barra de desplazamiento vertical mostrar
- 21. ¿Por qué el texto en el cuadro de texto está resaltado (seleccionado) cuando se muestra el formulario?
- 22. [WPF]: El estilo de una barra de desplazamiento, pero la barra de desplazamiento ListView no está afectado por el estilo
- 23. Jquery clon de un cuadro de texto sin el contenido
- 24. EditorPara (fecha): ¿Cómo mostrar el cuadro de texto vacío?
- 25. Detectar si el texto en un elemento de entrada (tipo = texto) excede los límites en FireFox
- 26. Desplazamientos de texto fuera del límite del cuadro UITextView
- 27. gatillo infinita de desplazamiento cuando no hay suficiente contenido para barra de desplazamiento en la página de carga
- 28. Retire la barra de desplazamiento en un cuadro de lista
- 29. ¿Es posible hacer una barra de desplazamiento fuera del contenido que se desplaza?
- 30. Barra de desplazamiento como Google está usando
Desafortunadamente no. Puede establecer barras de desplazamiento en horizontal, vertical o en ambos, pero no para mostrar/ocultar cuando sea necesario. – Anders
que está solo en el cuadro de texto bá sico - prueba RichTextBox – Cullub