Практикум прикладного программирования на C# в среде VS.NET 2005

Панели инструментов и строка состояния

Показывать лекцию целиком

Файлы к лабораторной работе Вы можете скачать здесь.

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

Заготовка приложения со стартовой формой

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

  • Выполните команду File/New/Project и заполните, в соответствии с рисунком, мастер создания приложения с именем ToolStatusStrip
  • Через панель Solution Explorer переименуйте файл Form1.cs в Start.cs, а заголовку окна формы присвойте значение Text =" Lab49 - Имя студента "
  • Поместите на форму библиотечный компонент ListBox и настройте его в соответствии с таблицей свойств
  • Таблица свойств экземпляра ListBox
    Свойство Значение
    Name listBoxChoice
    Items Упражнение 1.
      Упражнение 2.
      Упражнение 3.
    Dock Fill
  • Через панель Properties создайте обработчик для события SelectedIndexChanged объекта listBoxChoice, который заполните так
  • Form frm;   // Объявили поле
            private void listBoxChoice_SelectedIndexChanged(object sender, EventArgs e)
            {
                // Привязали номер упражнения к индексу списка
                ListBox list = (ListBox)sender;
                string formName = "Form" + (list.SelectedIndex + 1);
        
                ///////////////////////////////////////////////////
                // Следующий код взят из лабораторной работы №47
                ///////////////////////////////////////////////////
                // Читаем коллекцию запущенных форм
                FormCollection fc = Application.OpenForms;
                bool IsRun = false;
                // Перебираем коллекцию
                foreach (Form form in fc)
                {
                    // Имя очередной запущенной формы сравниваем с закрепленным за кнопкой
                    if (form.Name == formName)
                    {
                        IsRun = true;   // Нашли, что форма запущена, поднимаем флаг
                        frm = form;     // Сохраняем ссылку на запущенную форму для фокуса
                        break;          // Выходим из цикла
                    }
                }
        
                // Если форма не запущена - запускаем
                if (!IsRun)
                {
                    switch (formName)
                    {
                        case "Form1":
                            frm = new Form1();
                            break;
                        case "Form2":
                            frm = new Form2();
                            break;
                        case "Form3":
                            frm = new Form3();
                            break;
                    }
        
                    this.AddOwnedForm(frm);     // Сделать новую frm подчиненной Start
                    // frm.Owner = this;        // Алтернативный способ назначить владельца
                    frm.ShowInTaskbar = false;  // Не отображать метку окна в панели задач
                    frm.Show();                 // Показать новую форму
                }
                else
                    frm.Focus();                // Передать фокус запущенной форме        
            }

    Недостаток данного кода в том, что мы привязали вызов формы упражнения к индексу списка. Примененный здесь способ предотвращения одновременного запуска одного и того же упражнения мы всесторонне рассматривали в предыдущих лабораторных работах.

  • Командой меню оболочки Project/Add Windows Form добавьте в проект еще три формы с именами Form1, Form2, Form3
  • Поместите на каждую форму Form1, Form2, Form3 из панели Toolbox какой-нибудь элемент управления (например, Button ) и сразу удалите его, чтобы визуальный редактор явно прописал свойство Name в файле *.Designer.cs
  • Запустите приложение и убедитесь в работоспособности механизма вызова отдельных упражнений
  • Вернуться к учебному плану