Как добавить новое окно в windows forms

Добавление форм. Взаимодействие между формами

Последнее обновление: 31.10.2015

Чтобы добавить еще одну форму в проект, нажмем на имя проекта в окне Solution Explorer (Обозреватель решений) правой кнопкой мыши и выберем
Add(Добавить)->Windows Form…

добавление новой формы

Дадим новой форме какое-нибудь имя, например, Form2.cs:

создание новой формы

Итак, у нас в проект была добавлена вторая форма. Теперь попробуем осуществить взаимодействие между двумя формами. Допустим, первая форма
по нажатию на кнопку будет вызывать вторую форму. Во-первых, добавим на первую форму Form1 кнопку и двойным щелчком по кнопке перейдем в файл кода. Итак,
мы попадем в обработчик события нажатия кнопки, который создается по умолчанию после двойного щелчка по кнопке:

private void button1_Click(object sender, EventArgs e)
{

}

Теперь добавим в него код вызова второй формы. У нас вторая форма называется Form2, поэтому сначала мы создаем объект данного класса, а потом для его
отображения на экране вызываем метод Show:

private void button1_Click(object sender, EventArgs e)
{
	Form2 newForm = new Form2();
	newForm.Show();
}

Теперь сделаем наоборот — чтобы вторая форма воздействовала на первую. Пока вторая форма не знает о существовании первой. Чтобы это исправить, надо
второй форме как-то передать сведения о первой форме. Для этого воспользуемся передачей ссылки на форму в конструкторе.

Итак перейдем ко второй форме и перейдем к ее коду — нажмем правой кнопкой мыши на форму и выберем View Code (Просмотр кода). Пока он пустой и
содержит только конструктор. Поскольку C# поддерживает перегрузку методов, то мы можем создать несколько методов и конструкторов с разными
параметрами и в зависимости от ситуации вызывать один из них. Итак, изменим файл кода второй формы на следующий:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace HelloApp
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        public Form2(Form1 f)
        {
            InitializeComponent();
            f.BackColor = Color.Yellow;
        }
    }
}

Фактически мы только добавили здесь новый конструктор public Form2(Form1 f), в котором мы получаем первую форму и устанавливаем ее фон
в желтый цвет. Теперь перейдем к коду первой формы, где мы вызывали вторую форму и изменим его на следующий:

private void button1_Click(object sender, EventArgs e)
{
	Form2 newForm = new Form2(this);
	newForm.Show();
}

Поскольку в данном случае ключевое слово this представляет ссылку на текущий объект — объект Form1, то при создании второй формы она будет получать ее (ссылку)
и через нее управлять первой формой.

Теперь после нажатия на кнопку у нас будет создана вторая форма, которая сразу изменит цвет первой формы.

Мы можем также создавать объекты и текущей формы:

private void button1_Click(object sender, EventArgs e)
{
	Form1 newForm1 = new Form1();
	newForm1.Show();
		
	Form2 newForm2 = new Form2(newForm1);
	newForm2.Show();
}

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

I have an application that among other things has an Edit Button and when the user clicks on that button I want a new window to open with various textboxes for editing purposes.

I can create a new window with code like

Form editform = new Form();

But I want to design that window in the Designer too.

  • c#
  • .net
  • winforms

Peter Mortensen's user avatar

asked Aug 17, 2011 at 20:42

user850010's user avatar

user850010user850010

6,33112 gold badges39 silver badges60 bronze badges

1

  • It’s trivial but that isn’t a reason to close it. If one beginner programmer came here to ask this question, others will too (And find this one, hopefully).

    Aug 17, 2011 at 20:52

2 Answers

In Visual Studio, right-click on your project and select Add->Windows Form. That will give you a new form to work with. Lay it out how you want. Then you can launch the window from your main window with code similar to the following:

MyEditForm form = new MyEditForm();
form.Show();

Peter Mortensen's user avatar

answered Aug 17, 2011 at 20:46

Brian Driscoll's user avatar

Brian DriscollBrian Driscoll

19.4k3 gold badges46 silver badges65 bronze badges

3

  • I also want to add check out the DialogResult to return whether edit was successful, etc.

    Aug 17, 2011 at 23:23

  • Opening it in a non-modal way?

    Apr 23, 2015 at 11:51

  • @PeterMortensen Show() is not modal; for a modal dialog you’d want to call the ShowDialog() method instead.

    Apr 23, 2015 at 13:14

To answer Rick’s comment on Brian’s answer:

        using (var login = new Login())
        {
            switch(login.ShowDialog())
            {
                case DialogResult.OK:
                    Application.Run(new Studio());
                break;
            }
        }

answered Aug 15, 2012 at 16:41

Levitikon's user avatar

LevitikonLevitikon

7,7499 gold badges57 silver badges74 bronze badges

1

  • Would that be behaving like a modal dialog, then?

    Apr 23, 2015 at 12:04


Содержание

  • Условие задания
  • Выполнение
    • 1. Создать приложение типа Windows Forms Application
    • 2. Разработка главной формы приложения
    • 3. Создание второстепенной формы
    • 4. Разработка второстепенной формы
    • 5. Программирование событий клика на кнопках OK и Cancel формы Form2
    • 6. Вызов формы Form2 из главной формы приложения
    • 7. Выполнение приложения
  • Связанные темы

Поиск на других ресурсах:

Условие задания

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

В главной форме Form1 разместить:

  • элемент управления типа Label для вывода результата возврата из второстепенной формы;
  • элемент управления типа Button для вызова второстепенной формы.

Во второстепенной форме Form2 разместить:

  • элемент управления типа Label для вывода заголовка формы;
  • два элемента управления типа Button для обеспечения подтверждения или неподтверждения выбора (действия) во второстепенной форме.

C# Схема взаимодействия между формами

Рис. 1. Схема взаимодействия между формами

 


Выполнение

1. Создать приложение типа Windows Forms Application

Запустить Microsoft Visual Studio 2010. Пример создания нового приложения типа Windows Forms Application подробно описывается здесь.

Сохранить проект в произвольной папке.

После создания приложения у нас есть одна форма. Программный код формы размещен в файле «Form1.cs» (рис. 2).

C# Windows Forms Главная форма

Рис. 2. Главная форма приложения Form1

 

2. Разработка главной формы приложения

Из палитры элементов управления Toolbox выносим на форму:

  • элемент управления типа Button;
  • элемент управления типа Label.

Автоматически создаются два объекта-переменные с именами button1 и label1.
В элементе управления типа Button свойство Text установить в значение «Show Form 2«.
В элементе управления типа Label свойство Text установить в значение «Result = «.
После внесенных изменений главная форма Form1 приложения будет иметь вид как показано на рисунке 3.

C# Windows Forms форма

Рис. 3. Главная форма приложения после внесенных изменений

 

3. Создание второстепенной формы

Для создания второстепенной формы в C# можно воспользоваться несколькими способами.

Способ 1.
Для добавления формы №2 в проект этим способом нужно вызвать команду (рис. 4)

Project -> Add Windows Form...

C# Windows Forms команда "Add Windows Form..."

Рис. 4. Команда «Add Windows Form…» для добавления новой формы в проект

В результате откроется окно «Add New Item — Windows Forms Application1«. В этом окне выбираем элемент «Windows Form» (рис. 5). Оставляем имя формы как «Form2.cs«.

Windows Form C# добавление новой формы

Рис. 5. Окно добавления новой формы к проекту

После нажатия на кнопке «Add» новая форма будет добавлена к проекту (рис. 6).

C# Windows Forms форма Form2 файл "Form2.cs"Рис. 6. Новосозданная форма Form2 и файл «Form2.cs«

Способ 2.

Также новую форму можно добавить к проекту с помощью соответствующей команды из контекстного меню (рис. 7).
Последовательность действий следующая:

  • в Solution Explorer сделать клик правой кнопкой «мышки» на названии приложения WindowsFormsApplication1;
  • выбрать подменю Add;
  • в подменю Add выбрать команду «Windows Form…«.

C# Windows Forms новая форма Solution Explorer

Рис. 7. Добавление новой формы из Solution Explorer

В результате откроется точно такое же окно как на рисунке 5.

 

4. Разработка второстепенной формы

Следующим шагом есть разработка второстепенной формы. Используя средства панели инструментов Toolbox создаем второстепенную форму Form2 как показано на рисунке 8. Такое построение формы соответствует условию задачи. Таким же образом, на Form2 имеем элементы управления label1, butto1, button2.

C# Windows Forms Второстепенная форма Form2

Рис. 8. Второстепенная форма Form2

 

5. Программирование событий клика на кнопках OK и Cancel формы Form2

Программируем событие клика на кнопке OK. Подробный пример программирования события клика на кнопке OK описывается здесь.

В программный код обработчика события button1_Click() (кнопка «OK«) вписываем следующую строку:

this.DialogResult = DialogResult.OK;

это значит, что результат возврата из формы Form2 есть «OK«.
Точно так же в обработчике события button2_Click вписываем:

this.DialogResult = DialogResult.Cancel;

это значит выбор кнопки «Cancel» (button2).



После внесенных изменений листинг программного кода файла «Form2.cs» будет иметь следующий вид:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
  public partial class Form2 : Form
  {
    public Form2()
    {
      InitializeComponent();
    }
    private void button1_Click(object sender, EventArgs e)
    {
      this.DialogResult = DialogResult.OK;
    }

    private void button2_Click(object sender, EventArgs e)
    {
      this.DialogResult = DialogResult.Cancel;
    }
  }
}

Переход к программному коду формы Form2 (файл «Form2.cs«) можно осуществить с помощью Solution Explorer. Для этого в Solution Explorer вызываем контекстное меню для формы Form2 и из этого меню выбираем команду «View Code» (рис. 9).

Visual Studio C# Команда "View Code"

Рис. 9. Команда «View Code» для перехода в режим программного кода

 

6. Вызов формы Form2 из главной формы приложения

Согласно с условием задачи, для вызова Form2 из Form1 нужно запрограммировать событие клика на кнопке «Show Form 2«.

Программный код обработчика события будет иметь следующий вид:

...
private void button1_Click(object sender, EventArgs e)
{
    Form2 f = new Form2(); // создаем объект типа Form2

    if (f.ShowDialog() == DialogResult.OK) // вызов диалогового окна формы Form2
    {
        label1.Text = "Result = OK!"; 
    }
    else
    {
         label1.Text = "Result = Cancel!";
    }
}
...

В листинге, приведенном выше, сначала создается экземпляр класса типа Form2. В операторе условного перехода if осуществляется вызов диалогового окна формы Form2 с помощью строки

f.ShowDialog();

Функция ShowDialog() выводит окно формы и держит его открытым до тех пор, пока пользователь не сделает какой-либо выбор. После выбора пользователем той или иной команды, окно закрывается с кодом возврата. Происходит проверка кода возврата с известными константами класса DialogResult. После проверки выводится сообщение о действии, выбранном пользователем в Form2 (элемент управления label2).

Листинг всего программного кода формы Form1 следующий

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            Form2 f = new Form2();
            if (f.ShowDialog() == DialogResult.OK)
            {
                label1.Text = "Result = OK!";
            }
            else
            {
                label1.Text = "Result = Cancel!";
            }
        }
    }
}

 

7. Выполнение приложения

После выполненных действий можно выполнять приложение и исследовать его работу.


Связанные темы

  • Delphi. Создание новой формы и подключение ее к главной форме программы
  • C++ Builder. Пример создания и вызова новой формы из главной формы приложения
  • Пример создания и вызова диалогового окна в MS Visual Studio 2010 — C++ (MFC)


Windows Forms — это фреймворк для создания графического пользовательского интерфейса (GUI) в приложениях, разработанных на платформе Microsoft .NET. С использованием Windows Forms вы можете создавать окна, кнопки, текстовые поля и другие элементы управления, чтобы делать ваши приложения более удобными в использовании.

Создание нового окна Windows Forms может показаться сложной задачей для начинающих разработчиков, но на самом деле это вполне доступно. В этом руководстве я пошагово расскажу, как создать новое окно Windows Forms, создать несколько элементов управления и настроить их свойства.

Для начала работы с Windows Forms вам понадобится IDE (интегрированная среда разработки) Visual Studio. Если у вас уже установлена Visual Studio, откройте ее и создайте новый проект Windows Forms. Если вы еще не установили Visual Studio, сначала загрузите и установите ее, а затем запустите Visual Studio и создайте новый проект Windows Forms.

Содержание

  1. Как создать новое окно Windows Forms
  2. Установка необходимых инструментов
  3. Создание нового проекта в Visual Studio
  4. Добавление элементов управления на форму
  5. Настройка свойств элементов управления
  6. Написание кода для обработки событий

Как создать новое окно Windows Forms

Чтобы создать новое окно Windows Forms, выполните следующие шаги:

Шаг 1: Откройте Visual Studio и создайте новый проект Windows Forms. Для этого выберите пункт меню «Файл» -> «Создать» -> «Проект». В открывшемся окне выберите шаблон «Windows Forms приложение» и укажите имя проекта.

Шаг 2: После создания проекта в окне «Solution Explorer» щелкните правой кнопкой мыши на проекте и выберите пункт «Добавить» -> «Новый элемент» -> «Windows Form». Укажите имя новой формы и нажмите кнопку «Добавить».

Шаг 3: В окне дизайнера формы вы можете добавить элементы управления, такие как кнопки, текстовые поля, списки и т.д. для создания интерфейса приложения. Выберите нужный элемент управления из панели инструментов и перетащите его на форму.

Шаг 4: Опишите логику работы окна Windows Forms в коде. Перейдите в режим кода, нажав кнопку «Показать код» или дважды щелкнув на форме в окне «Solution Explorer». В коде вы можете добавить обработчики событий элементов управления и определить логику их работы.

Шаг 5: Скомпилируйте и запустите проект, чтобы увидеть созданное окно в действии. Нажмите кнопку «Запуск» или используйте горячие клавиши Ctrl + F5.

Теперь вы знаете, как создать новое окно Windows Forms в Visual Studio. С помощью этого инструмента вы можете создавать пользовательские интерфейсы для различных приложений, включая игры, утилиты, программы управления и многое другое.

Установка необходимых инструментов

Для создания нового окна Windows Forms вам понадобятся следующие инструменты:

  • Visual Studio: это интегрированная среда разработки, которая позволяет создавать приложения для Windows. Вы можете скачать последнюю версию Visual Studio с официального сайта Microsoft.
  • .NET Framework: это платформа разработки, которая необходима для запуска приложений Windows Forms. Проверьте, что у вас установлена последняя версия .NET Framework.

После того как у вас будут установлены эти инструменты, вы можете приступить к созданию нового окна Windows Forms и разработке своего приложения.

Создание нового проекта в Visual Studio

Прежде чем создавать новое окно Windows Forms, необходимо создать новый проект в среде разработки Visual Studio. В данном руководстве представлено пошаговое описание процесса создания нового проекта Windows Forms в Visual Studio.

1. Откройте среду разработки Visual Studio.

2. В верхнем меню выберите пункт «Файл», затем «Создать», и нажмите на «Проект».

3. Появится диалоговое окно «Создать проект». В левой панели выберите категорию «Установленные», а в правой — «Visual C#».

4. Выберите шаблон проекта «Windows Forms приложение» и нажмите кнопку «Далее».

5. Введите имя проекта и выберите папку для сохранения проекта на вашем компьютере. Нажмите кнопку «Создать».

6. После создания проекта откроется окно «Мастер конструктора форм». Вам предоставляется возможность добавить новую форму к проекту. Вы можете выбрать «Добавить оставшуюся форму и задать имя» или выбрать «Добавить только файл формы». В данном руководстве выберите первый вариант и укажите имя новой формы. Нажмите «Готово».

7. После нажатия кнопки «Готово» откроется окно редактора форм, где вы сможете создавать интерфейс для вашего окна Windows Forms.

Теперь вы готовы к созданию нового окна Windows Forms в Visual Studio! Приступайте к созданию интерфейса, добавлению элементов управления и написанию кода для вашей программы.

Добавление элементов управления на форму

После создания нового окна Windows Forms, вы можете добавить на него различные элементы управления, такие как кнопки, текстовые поля, метки и другие, чтобы создать интерактивную пользовательскую форму.

Чтобы добавить элементы управления на форму, вам необходимо перейти к конструктору формы. Конструктор позволяет визуально редактировать форму и добавлять на нее элементы управления.

Для добавления элемента управления на форму, выполните следующие шаги:

  1. Откройте конструктор формы, дважды щелкнув на файле формы с расширением .designer.cs.
  2. На панели инструментов выберите нужный элемент управления, например, кнопку (Button).
  3. Наведите курсор мыши на форму и кликните левой кнопкой мыши, чтобы добавить элемент на форму.
  4. Отрегулируйте размер и положение элемента управления на форме, перетаскивая его углы или стороны.
  5. Повторите шаги 2-4 для добавления любых других элементов управления на форму.

Таким образом, вы можете добавить любое количество элементов управления на форму и настроить их свойства и поведение в коде приложения.

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

Настройка свойств элементов управления

При создании нового окна Windows Forms важно настроить свойства элементов управления, чтобы они отображались и взаимодействовали с пользователем правильно.

Вот несколько основных свойств элементов управления:

  • Text — свойство, которое определяет текстовое содержимое элемента управления, такого как кнопка или метка.
  • Size — свойство, которое определяет размер элемента управления в пикселях.
  • Location — свойство, которое определяет позицию элемента управления на форме.
  • BackColor — свойство, которое определяет фоновый цвет элемента управления.
  • ForeColor — свойство, которое определяет цвет текста элемента управления.
  • Font — свойство, которое определяет шрифт текста элемента управления.
  • Enabled — свойство, которое определяет, может ли пользователь взаимодействовать с элементом управления.
  • Visible — свойство, которое определяет, отображается ли элемент управления на форме.

Настройка свойств элементов управления происходит в конструкторе формы или с использованием инструментов дизайнера Visual Studio.

Примеры кода:

Настройка свойства Text для кнопки:


Button btn = new Button();
btn.Text = "Нажми меня";

Настройка свойства Size для метки:


Label lbl = new Label();
lbl.Size = new Size(100, 50);

Настройка свойства BackColor для поля ввода:


TextBox textBox = new TextBox();
textBox.BackColor = Color.LightGray;

При работе с элементами управления в Windows Forms важно знать и использовать правильные свойства для достижения нужного внешнего вида и функциональности.

Написание кода для обработки событий

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

Один из способов обработки событий в Windows Forms — использование обработчиков событий. Обработчик события представляет собой метод, который будет вызываться при возникновении определенного события.

Для этого вам нужно выполнить следующие шаги:

  1. Перейдите к коду вашего окна Windows Forms.
  2. Выберите элемент управления, для которого хотите добавить обработчик события.
  3. Откройте свойства этого элемента управления и найдите список доступных событий.
  4. Выберите нужное событие, которое вы хотите обработать, например, Click для кнопки.
  5. Дважды щелкните на свойстве выбранного события, чтобы создать обработчик события.
  6. В коде появится новый метод с именем, соответствующим имени события. Напишите код внутри этого метода, который будет выполняться при возникновении события.

Например, если вы создали новую кнопку с именем myButton на вашей форме и хотите обработать событие Click, вы можете написать следующий код внутри обработчика события:

private void myButton_Click(object sender, EventArgs e)
{
// Ваш код обработки события
}

Теперь, когда пользователь нажимает на кнопку myButton, код внутри обработчика события myButton_Click будет выполнен.

Таким образом, написание кода для обработки событий в Windows Forms позволяет вам контролировать взаимодействие пользователя с интерфейсом и выполнять необходимые действия в ответ на события.

Asked

Viewed
4k times

Let’s say I have a basic form, there’s a button and when I click it, it opens a new window.
How can I do this? I tried creating a new form instance on button click event, but it gives me exception, that something is wrong.

  • c#
  • visual-studio

asked Nov 28, 2010 at 20:13

3

  • show your code please. What is the exception?

    Nov 28, 2010 at 20:24

  • Sorry, I would show the exception but I don’t remember what I was doing that caused it and I can’t reproduce it now!

    – user360330

    Nov 28, 2010 at 20:29

  • Bah, I can’t remember the answer.

    Nov 28, 2010 at 20:30

2 Answers

Form frm = new Form();
frm.ShowDialog();
//frm.Show();

Or please share your code..

answered Nov 28, 2010 at 20:15

Rami Alshareef's user avatar

Rami AlshareefRami Alshareef

7,03513 gold badges47 silver badges75 bronze badges

2

  • That was so easy… Thanks! By the way, could you tell me a good page to learn c sharp (windows forms especially), if you know one? I tried searching but I really couldn’t find any decent ones. :(

    – user360330

    Nov 28, 2010 at 20:21

  • Google is your friend, trust me :) something like google.com/…

    Nov 28, 2010 at 20:26

//assuming that ur first form is named Form1 and ur second form is Form2

//assuming that ur button is button1
//inside form1 something like this is shown
Button1.Click +=  new EventHandler(this.Button1_Click);

void Button1_Click(Object sender, EventArgs e){
Form2 form = new Form2();
//you do either
Form2.Show();
//or focus remains on form2 do this
Form2.ShowDialog();
}

//hope this help

answered Nov 28, 2010 at 20:20

Gian Santillan's user avatar

Gian SantillanGian Santillan

7531 gold badge7 silver badges16 bronze badges

  • The Overflow Blog
  • Featured on Meta

Related

Hot Network Questions

  • 以后我少的一点儿 what does this mean?

  • A Trivial Pursuit #18 (Sports and Leisure 3/4): Connected

  • How to draw the trajectory of the circumscribed rectangle of an ellipse and determine the area range of the rectangle?

  • If there is still space available in the overhead bin after boarding and my ticket has an under-seat carry-on only, can I put my bag up there?

  • Why are these SATA bus ports different?

  • Redefining queue with different front and rear

  • What does «I had found the time to hover at some half a dozen jewellers’ windows» mean in this context?

  • How can I seal a crack in a teapot in a foodsafe manner?

  • Exact positioning and how easy would it be to recreate this in LaTeX?

  • Is the Clebsch-Gordan decomposition of Lie algebra or Lie group representations?

  • Colouring a rug

  • Why do Atlas III and V use Russian RD-180 engines?

  • How can I write the equation of the parabola passing through list of three points?

  • Running out of time in a world where time has stopped, how to make it consistent?

  • Copying files to directories according the file name

  • NameValueList in JSS to field type

  • Why would employee be paid less than contractor?

  • Electric Dryer Issue: Clothes Damp in Sensor Drying Mode

  • How do Landau and Lifshitz avoid the ergodicity problem?

  • Is 14.29 volts too strong for a 14V DC chronograph?

  • Why are jurors still asked to operate the law if their primary role is to find facts?

  • Spacing on text macros

  • How can I make onboard PC speaker beep on Ubuntu Server 22.04.3 LTS?

  • Can a defense attorney face any serious repercussions for trying to nullify the jury?

more hot questions

Question feed

Your privacy

By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.

  • Как добавить обложку на трек windows 10
  • Как добавить несколько мониторов в windows 11 pc
  • Как добавить оперативную память на компьютере windows 10
  • Как добавить папку мои документы на рабочий стол windows 10
  • Как добавить новую службу в windows