Przewijanie konsoli

Uwaga! Informacje na tej stronie mają ponad 5 lat. Nadal je udostępniam, ale prawdopodobnie nie odzwierciedlają one mojej aktualnej wiedzy ani przekonań.

# Przewijanie konsoli

10:57
Sun
23
Nov 2008

Kiedy piszemy konsolę w postaci zwykłego systemowego okienka z kontrolką RichEdit, powstaje pytanie, czy podczas dodawania nowego komunikatu przewijać ją na dół. Jeśli nie, to będzie denerwujące dla użytkownika, który chciałby stale widzieć najnowsze komunikaty. Jeśli tak, to będzie denerwujące dla tego, kto chciałby przeczytać konkretny komunikat mimo pojawiania się nowych. Co więc zrobić? Przycisk, który pozwoli zablokować przewijanie konsoli?

Moim zdaniem najlepiej jest zrobić tak, jak to robi Visual C++ choćby w okienku Output - przewijać, jeśli kursor jest na końcu i nie przewijać, jeśli użytkownik umieści go gdzieś wyżej. W C# z kontrolką typu RichTextBox można to zrobić tak:

public void OutputLine(string Text, Color c) {
  int SelectionStart = RichTextBox1.SelectionStart;
  bool SelectionAtEnd =
    (SelectionStart == RichTextBox1.Text.Length) &&
    (RichTextBox1.SelectionLength == 0);

  RichTextBox1.SelectionStart = RichTextBox1.Text.Length;
  RichTextBox1.SelectionLength = 0;

  RichTextBox1.SelectionColor = c;
  RichTextBox1.AppendText(Text + "\r\n");

  if (SelectionAtEnd)
    RichTextBox1.ScrollToCaret();
  else
    RichTextBox1.SelectionStart = SelectionStart;
}

Konsola w C#

Comments | #.net #gui Share

Comments

STAT NO AD
[Stat] [STAT NO AD] [Download] [Dropbox] [pub] [Mirror]
Copyright © 2004-2018