2010-08-13 16 views
5

Ist es möglich, das vertikale Scrollen in ICSharpCode.TextEditor so zu konfigurieren, dass standardmäßig keine vertikale Bildlaufleiste sichtbar ist. Und nur wenn jemand viele Zeilen (jenseits der aktuellen Höhe dieses Steuerelements) eingibt, wird automatisch eine vertikale Bildlaufleiste angezeigt. Wenn ja, wie?ICSharpCode.TextEditor Vertikaler Bildlauf

+0

+1 Nicht mehr Tumbleweed :) –

Antwort

1

Es ist einfach die Funktion selbst hinzufügen:

1) Goto den Namespace ICSharpCode.TextEditor und öffnen Sie die TextAreaControl Klasse. Der Speicherort der Datei lautet: C: ... \ ICSharpCode.TextEditor \ Project \ Src \ Gui \ TextAreaControl.cs

2) ein Verfahren Fügen Sie die Sichtbarkeit der horizontalen oder vertikalen Scrollbalken zu setzen:

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

3) im Rahmen des Projekts mit dem Texteditor, das ist, wie Sie die ShowScrollBars() Methode aufrufen:

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

Dieser Code funktioniert der Trick, um die vertikale Bildlaufleiste auf der Anzahl der Textzeilen basierend zeigen:

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

Im TextAreaControl:

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

ps ich dieses Code Project ICSharpCode-TextEditor Projekt bin mit.

+0

Ist es auch möglich, die horizontale ScrollBar zu verstecken? Ich habe den Code und die API-Anrufe überprüft, aber ich kann es nicht finden. –

+0

Ich habe den Code nicht offen vor mir, obwohl Sie in der Lage sein sollten, die 'Orientation.Vertical' auf' Orientation.Horizontal' einzustellen. –

+0

danke, ja ich weiß aber ich fragte die falsche Frage, ich wollte es wissen Wenn es eine Möglichkeit gibt, die Gesamtzahl von Spalten/Max-Zeichen in einer Zeile zu bestimmen, um zu sehen, ob es möglich ist, die HScrollBar basierend auf dieser Logik automatisch auszublenden. –