Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ICSharpCode.TextEditor Vertical Scrolling

Is it possible to configure vertical scrolling in ICSharpCode.TextEditor such that by default no vertical scrollbar is visible. And that only when someone types a lot of lines (beyond current height of this control) that a vertical scrollbar appears automatically. If yes, how?

like image 312
Ishaan Avatar asked Nov 15 '22 08:11

Ishaan


1 Answers

Its easy to add the function yourself:

1) Goto the namespace ICSharpCode.TextEditor and open the TextAreaControl class. The file location is: C:...\ICSharpCode.TextEditor\Project\Src\Gui\TextAreaControl.cs

2) Add a method to set the visibility of the Horizontal or Vertical scrollbar:

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

3) In the project with the TextEditor, this is how you call the ShowScrollBars() method:

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

This code does the trick to show the vertical scrollbar based on the number of text lines:

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

In the TextAreaControl:

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

ps I'm using this Code Project ICSharpCode-TextEditor project.

like image 65
Jeremy Thompson Avatar answered Dec 07 '22 17:12

Jeremy Thompson