Викиверситет
ruwikiversity
https://ru.wikiversity.org/wiki/%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0
MediaWiki 1.47.0-wmf.1
first-letter
Медиа
Служебная
Обсуждение
Участник
Обсуждение участника
Викиверситет
Обсуждение Викиверситета
Файл
Обсуждение файла
MediaWiki
Обсуждение MediaWiki
Шаблон
Обсуждение шаблона
Справка
Обсуждение справки
Категория
Обсуждение категории
Портал
Обсуждение портала
Факультет
Обсуждения факультета
TimedText
TimedText talk
Модуль
Обсуждение модуля
Event
Event talk
Разработка на Windows Forms/Об этом курсе
0
30284
166216
166193
2026-05-09T18:43:41Z
Krutoi baton
36703
дополнение
166216
wikitext
text/x-wiki
Итак, вы решили (наверное) обучаться в нашем курсе. И вы наверняка задаетесь вопросом: '''зачем мне учить Windows Forms? Какая от него польза?'''
# Во-первых, это решение от самого Microsoft, разработчика Windows. То есть по-любому ваши приложения на Windows Forms как-то Windows будет запускать (но смотря какие версии компонентов использовались)
# Во-вторых, он использует C#. А это средний в сложности язык, в котором, наверное, самое сложное - запомнить что какой класс делает
# Ну и в третьих, это достаточно несложно. Все сводится к размещению элементов на форме и прописании их event's callbacks (обработчиков событий)
А наш курс позиционируется на достаточно понятную подачу материала. Так что не бойтесь, можете смело записываться в курс. А если что-то не понятно - пишите в обсуждение на главной странице курса, вам там помогут преподаватели или другие ученики.
Очень желательно, чтобы вы изучили перед этим курсом сам язык C#, ведь некоторые конструкции, их механизм работы и т.п. могут быть не понятны новчику в C#. Вот, к примеру, [[Программирование на Си-шарп|курс на Викиверситете]].
Удачи в учёбе!
g7a4y3e08ektner4ws58zsr69vqxj8f
Разработка на Windows Forms/Добавляем интерактивности
0
30291
166214
166203
2026-05-09T18:25:22Z
Krutoi baton
36703
иллюстрация
166214
wikitext
text/x-wiki
{{черновик}}
<center>Добавляем интерактивности в проект</center>
[[Разработка на Windows Forms/Создание первого приложения| << Предыдущий урок]]
Итак, теперь мы модем добавить интерактивность: давайте сделаем текстовое поле, в котором пользователь будет вводить свое имя, а надпись внизу динамически будет изменяться, приветствуя пользователя по имени.
Давайте из панели элементов перетащим на форму элементы <tt>TextBox</tt> и <tt>Label</tt> (две штуки <tt>Label</tt>). Разместим их так: элемент <tt>TextBox</tt> (поле ввода) разместим между <tt>Label</tt> (надписи). Нажмем на первую надпись (та, которая выше), и найдем ее свойство <tt>Text</tt> - это текст, который она отображает. Изменим его на "Введите свое имя". Для второй надписи просто уберем текст.
<gallery>
File:Form with three elements in developement page Visual Studio app.png|Размещенные элементы на форме
File:Part of propeteries window in developement page in Visual Studio, 1st variant.png|Свойство <tt>Text</tt> для <tt>label1</tt>
File:Part of propeteries window in developement page in Visual Studio, 2nd variant.png|Свойство <tt>Text</tt> для <tt>label2</tt>
File:Form with three elements in developement page Visual Studio app, variant with empty text in last element.png|thumb|Готовая форма после перетаскивания элементов и изменения свойств надписей
</gallery>
Теперь мы 2 раза нажимаем по нашему полю, и нас перенаправляет на код нашей формы, а именно в метод <tt>textBox1_TextChanged</tt>. Тут мы прописываем, что будет происходить:
<source lang="csharp">
private void textBox1_TextChanged(object sender, EventArgs e)
{
label2.Text = "Привет, " + textBox1.Text;
}
</source>
То есть мы заменяем текст во второй надписи на "Привет, " плюс текст из поля ввода. Давайте соберем наш проект и проверим!
<!--
TODO вставить 3 картинки
код
скрин приложения; пустая надпись
скрин приложения; введен текст
-->
Как видите, когда мы вводим текст, нижняя надпись изменяется в соответствии, что мы ввели. А что будет, если мы введем пустое имя? Надпись будет писать "Привет, " и все. Давайте сделаем проверку на пустое имя - если имя будет пустым, то текст надписи будет "У вас нет имени?"
<source lang="csharp">
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (textBox1.Text.Length > 0) label2.Text = "Привет, " + textBox1.Text;
else label2.Text = "У вас нет имени?";
}
</source>
Давайте проверять! Введем пустое имя (именно введем, так как изначально у нас пустое поле ввода и пустая надпись). И нижняя надпись показала "У вас нет имени?".
<!--
TODO вставить 2 картинки
вводим просто имя
введено пустое имя
-->
А давайте мы сделаем так: если строка после удаления некоторых символов будет пустая (символы из строки <tt>,<.>/?[{]}!@'"#№$;:%</tt>), то тоже будем это отображать. Вот код:
<source lang="csharp">
private void textBox1_TextChanged(object sender, EventArgs e)
{
string symbs = " ,<.>/?[{]}!@'\"#№$;:%";
string modified = textBox1.Text;
foreach (char c in modified)
{
if (symbs.Contains(c.ToString())) modified = modified.Replace(c.ToString(), "");
}
if (modified.Length > 0) label2.Text = "Привет, " + textBox1.Text;
else label2.Text = "У вас нет имени?";
}
</source>
Зачем нам дополнительная переменная? Мы же можем изменять сразу <tt>textBox1.text</tt>? Нет, не можем. Ведь он отображается пользователю внутри поля ввода! Мы проверяем строку, которую очистили от символов, на длину, и если ее длина больше 0 (есть другие символы) то мы отображаем исходное имя. А если ноль, то отображаем "заглушку". Проверяем:
<!--
TODO вставить 2 картинки
введено просто имя
введены символы из symbs
-->
Оно заработало! Итак, мы сделали уже свое первое приложение. Могу вас поздравить! Ждем в следующем уроке!
== Домашнее задание ==
# Сделайте приложение, в котором у пользователя запрашивается имя пользователя и пароль. Создайте словарь формата пользователь-пароль, и если данные совпадают, отображайте, что данные верные. Иначе отображайте, что вход невозможен.
# Реализуйте игру, где пользователю надо ввести решение какого-либо уравнения. В зависимости от ответа выводите соответствующую надпись.
(Усложнение: можете сделать так, чтобы пользователь вводил два ответа (решения уравнения; например, вы укажите квадратное уравнение) через какой-то знак, например, пробел, и проверять, что значения именно два и они верные)
o03ohnaryv9aaa9n737gv1tq91w5rx5
166215
166214
2026-05-09T18:25:46Z
Krutoi baton
36703
166215
wikitext
text/x-wiki
{{черновик}}
<center>'''Добавляем интерактивности в проект'''</center>
[[Разработка на Windows Forms/Создание первого приложения| << Предыдущий урок]]
Итак, теперь мы модем добавить интерактивность: давайте сделаем текстовое поле, в котором пользователь будет вводить свое имя, а надпись внизу динамически будет изменяться, приветствуя пользователя по имени.
Давайте из панели элементов перетащим на форму элементы <tt>TextBox</tt> и <tt>Label</tt> (две штуки <tt>Label</tt>). Разместим их так: элемент <tt>TextBox</tt> (поле ввода) разместим между <tt>Label</tt> (надписи). Нажмем на первую надпись (та, которая выше), и найдем ее свойство <tt>Text</tt> - это текст, который она отображает. Изменим его на "Введите свое имя". Для второй надписи просто уберем текст.
<gallery>
File:Form with three elements in developement page Visual Studio app.png|Размещенные элементы на форме
File:Part of propeteries window in developement page in Visual Studio, 1st variant.png|Свойство <tt>Text</tt> для <tt>label1</tt>
File:Part of propeteries window in developement page in Visual Studio, 2nd variant.png|Свойство <tt>Text</tt> для <tt>label2</tt>
File:Form with three elements in developement page Visual Studio app, variant with empty text in last element.png|thumb|Готовая форма после перетаскивания элементов и изменения свойств надписей
</gallery>
Теперь мы 2 раза нажимаем по нашему полю, и нас перенаправляет на код нашей формы, а именно в метод <tt>textBox1_TextChanged</tt>. Тут мы прописываем, что будет происходить:
<source lang="csharp">
private void textBox1_TextChanged(object sender, EventArgs e)
{
label2.Text = "Привет, " + textBox1.Text;
}
</source>
То есть мы заменяем текст во второй надписи на "Привет, " плюс текст из поля ввода. Давайте соберем наш проект и проверим!
<!--
TODO вставить 3 картинки
код
скрин приложения; пустая надпись
скрин приложения; введен текст
-->
Как видите, когда мы вводим текст, нижняя надпись изменяется в соответствии, что мы ввели. А что будет, если мы введем пустое имя? Надпись будет писать "Привет, " и все. Давайте сделаем проверку на пустое имя - если имя будет пустым, то текст надписи будет "У вас нет имени?"
<source lang="csharp">
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (textBox1.Text.Length > 0) label2.Text = "Привет, " + textBox1.Text;
else label2.Text = "У вас нет имени?";
}
</source>
Давайте проверять! Введем пустое имя (именно введем, так как изначально у нас пустое поле ввода и пустая надпись). И нижняя надпись показала "У вас нет имени?".
<!--
TODO вставить 2 картинки
вводим просто имя
введено пустое имя
-->
А давайте мы сделаем так: если строка после удаления некоторых символов будет пустая (символы из строки <tt>,<.>/?[{]}!@'"#№$;:%</tt>), то тоже будем это отображать. Вот код:
<source lang="csharp">
private void textBox1_TextChanged(object sender, EventArgs e)
{
string symbs = " ,<.>/?[{]}!@'\"#№$;:%";
string modified = textBox1.Text;
foreach (char c in modified)
{
if (symbs.Contains(c.ToString())) modified = modified.Replace(c.ToString(), "");
}
if (modified.Length > 0) label2.Text = "Привет, " + textBox1.Text;
else label2.Text = "У вас нет имени?";
}
</source>
Зачем нам дополнительная переменная? Мы же можем изменять сразу <tt>textBox1.text</tt>? Нет, не можем. Ведь он отображается пользователю внутри поля ввода! Мы проверяем строку, которую очистили от символов, на длину, и если ее длина больше 0 (есть другие символы) то мы отображаем исходное имя. А если ноль, то отображаем "заглушку". Проверяем:
<!--
TODO вставить 2 картинки
введено просто имя
введены символы из symbs
-->
Оно заработало! Итак, мы сделали уже свое первое приложение. Могу вас поздравить! Ждем в следующем уроке!
== Домашнее задание ==
# Сделайте приложение, в котором у пользователя запрашивается имя пользователя и пароль. Создайте словарь формата пользователь-пароль, и если данные совпадают, отображайте, что данные верные. Иначе отображайте, что вход невозможен.
# Реализуйте игру, где пользователю надо ввести решение какого-либо уравнения. В зависимости от ответа выводите соответствующую надпись.
(Усложнение: можете сделать так, чтобы пользователь вводил два ответа (решения уравнения; например, вы укажите квадратное уравнение) через какой-то знак, например, пробел, и проверять, что значения именно два и они верные)
s05igrfnoqrnrynoqhlgexkzu9fxic6