ICSharpCode.TextEditor Vertical Scrolling

回眸只為那壹抹淺笑 提交于 2019-12-12 10:59:32

问题


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?


回答1:


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.



来源:https://stackoverflow.com/questions/3476014/icsharpcode-texteditor-vertical-scrolling

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!