2010-08-13 12 views
5

È possibile configurare lo scorrimento verticale in ICSharpCode.TextEditor in modo tale che per impostazione predefinita non sia visibile alcuna barra di scorrimento verticale. E questo solo quando qualcuno digita molte linee (oltre l'altezza corrente di questo controllo) che appare automaticamente una barra di scorrimento verticale. Se sì, come?ICSharpCode.TextEditor Scorrimento verticale

+0

+1 Non più Tumbleweed :) –

risposta

1

relativo facile aggiungere la funzione da soli:

1) Goto lo spazio dei nomi ICSharpCode.TextEditor e aprire la classe TextAreaControl. Il percorso del file è: C: ... \ ICSharpCode.TextEditor \ Project \ Src \ Gui \ TextAreaControl.cs

2) Aggiungere un metodo per impostare la visibilità della barra di scorrimento orizzontale o verticale:

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

3) Nel progetto con il TextEditor, questo è come si chiama il metodo ShowScrollBars():

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

questo codice fa il trucco per mostrare la barra di scorrimento verticale in base al numero di righe di testo:

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);    
} 

Nella TextAreaControl:

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

ps sto usando questo progetto Code Project ICSharpCode-TextEditor.

+0

È anche possibile nascondere la barra di scorrimento orizzontale? Ho controllato il codice e le API, ma non riesco a trovarlo. –

+0

Non ho il codice aperto davanti a me, anche se dovresti essere in grado di impostare "Orientation.Vertical" su "Orientation.Horizontal' –

+0

grazie, sì lo so ma ho fatto la domanda sbagliata, volevo sapere se esiste un modo per determinare il numero totale di colonne/caratteri massimi su una linea per vedere se è possibile nascondere automaticamente HScrollBar in base a tale logica. –

Problemi correlati