2010-08-13 16 views
5

¿Es posible configurar el desplazamiento vertical en ICSharpCode.TextEditor tales que, por defecto sin barra de desplazamiento vertical es visible. Y que sólo cuando alguien escribe una gran cantidad de líneas (más allá de la altura actual de este control) de que una barra de desplazamiento vertical aparece automáticamente. Si es así, ¿cómo?desplazamiento vertical ICSharpCode.TextEditor

+0

1 Ya no Tumbleweed :) –

Respuesta

1

Su fácil de añadir la función de sí mismo:

1) Goto el espacio de nombres ICSharpCode.TextEditor y abrir la clase TextAreaControl. La ubicación del archivo es: C: ... \ ICSharpCode.TextEditor \ proyecto \ Src \ Gui \ TextAreaControl.cs

2) Añadir un método para establecer la visibilidad de la barra de desplazamiento horizontal o vertical:

public void ShowScrollBars(Orientation orientation,bool isVisible) 
{ 
    if (orientation == Orientation.Vertical) 
    { 
     vScrollBar.Visible = isVisible; 
    } 
    else 
    { 
     hScrollBar.Visible = isVisible; 
    } 
} 

3) en el proyecto con el TextEditor, así es como se llama al método ShowScrollBars():

editor.ActiveTextAreaControl.ShowScrollBars(Orientation.Vertical,false); 

este código hace el truco para mostrar la barra de desplazamiento vertical en función del número de líneas de texto:

public TextEditorForm() 
{ 
    InitializeComponent(); 
    AddNewTextEditor("New file"); 
    SetSyntaxHighlighting("Mathematica");  
    editor.ActiveTextAreaControl.TextEditorProperties.IndentationSize = 0; 
    editor.ActiveTextAreaControl.ShowScrollBars(Orientation.Vertical,false); 
    editor.TextChanged += new EventHandler(editor_TextChanged); 
} 

void editor_TextChanged(object sender, EventArgs e) 
{    
    bool isVisible = (editor.ActiveTextAreaControl.GetTotalNumberOfLines > editor.ActiveTextAreaControl.TextArea.TextView.VisibleLineCount); 
    editor.ActiveTextAreaControl.ShowScrollBars(Orientation.Vertical, isVisible);    
} 

En el TextAreaControl:

public int GetTotalNumberOfLines() 
{ 
    return this.Document.TotalNumberOfLines; 
} 

ps estoy usando este proyecto Code Project ICSharpCode-TextEditor.

+0

¿También es posible ocultar la barra de desplazamiento horizontal? Revisé el código y las llamadas de API, pero no puedo encontrarlo. –

+0

no tengo el código abierto frente a mí, aunque debe ser capaz de establecer la '' Orientation.Vertical' a Orientation.Horizontal' –

+0

gracias, sí lo sé, pero la pregunta equivocada, lo que quería saber si hay una manera de determinar el número total de columnas/caracteres como máximo en una línea para ver si es posible ocultar automáticamente HScrollBar basado en esa lógica. –

Cuestiones relacionadas