Опубликован: 13.07.2010 | Доступ: свободный | Студентов: 890 / 20 | Оценка: 4.40 / 4.20 | Длительность: 77:34:00
Самостоятельная работа 15:

Вывод текста в клиентскую область формы

Упражнение 2.Разбивка текста на колонки

Модифицируем предыдущую программу так, чтобы значения свойств выводились в столбик с отступом. Вот соответствующий вариант программы

using System;
using System.Windows.Forms;
using System.Drawing;
  
namespace Test
{
  public class SysInfoColumn : Form
  {
    public SysInfoColumn()
    {
      // Начальные настройки формы
      // Здесь ключевое слово this необязательно
      this.Text = "Разбиение текста на колонки";
      this.BackColor = SystemColors.Window;
      this.ForeColor = SystemColors.WindowText;
    }
  
    // Заголовок этой функции набрать вручную!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    protected override void OnPaint(PaintEventArgs e)
    {
      Graphics gr = e.Graphics;
      SolidBrush brush = new SolidBrush(this.ForeColor);
      int linespacing = Font.Height;
      Single y = 0; // Позиция строк по вертикали
      SizeF sizeF = gr.MeasureString( // Измеряем текстовый блок 
        "ArrangeStartingPosition ", // Образец самого длинного текста
        Font);
      Single xCol = sizeF.Width;// Позиция второй колонки
  
      gr.DrawString("ArrangeDirection: ",
        Font, brush, 0, y);
      gr.DrawString(SystemInformation.ArrangeDirection.ToString(),
        Font, brush, xCol, y);
  
      y += linespacing;
      gr.DrawString("ArrangeStartingPosition: ",
        Font, brush, 0, y);
      gr.DrawString(SystemInformation.ArrangeStartingPosition.ToString(),
        Font, brush, xCol, y);
  
      y += linespacing;
      gr.DrawString("BootMode: ",
        Font, brush, 0, y);
      gr.DrawString(SystemInformation.BootMode.ToString(),
        Font, brush, xCol, y);
  
      y += linespacing;
      gr.DrawString("Border3DSize: ",
        Font, brush, 0, y);
      gr.DrawString(SystemInformation.Border3DSize.ToString(),
        Font, brush, xCol, y);
  
      y += linespacing;
      gr.DrawString("BorderSize: ",
        Font, brush, 0, y);
      gr.DrawString(SystemInformation.BorderSize.ToString(),
        Font, brush, xCol, y);
  
      y += linespacing;
      gr.DrawString("CaptionButtonSize: ",
        Font, brush, 0, y);
      gr.DrawString(SystemInformation.CaptionButtonSize.ToString(),
        Font, brush, xCol, y);
  
      y += linespacing;
      gr.DrawString("CaptionHeight: ",
        Font, brush, 0, y);
      gr.DrawString(SystemInformation.CaptionHeight.ToString(),
        Font, brush, xCol, y);
  
      y += linespacing;
      gr.DrawString("ComputerName: ",
        Font, brush, 0, y);
      gr.DrawString(SystemInformation.ComputerName,
        Font, brush, xCol, y);
  
      y += linespacing;
      gr.DrawString("CursorSize: ",
        Font, brush, 0, y);
      gr.DrawString(SystemInformation.CursorSize.ToString(),
        Font, brush, xCol, y);
  
      y += linespacing;
      gr.DrawString("DbcsEnabled: ",
        Font, brush, 0, y);
      gr.DrawString(SystemInformation.DbcsEnabled.ToString(),
        Font, brush, xCol, y);
  
      base.OnPaint (e);
    }
  }
}
Листинг 15.13. Разбивка текста на колонки. Код файла SysInfoColumn.cs

Экранный результат выполнения этого кода будет таким