Remkomplekty.ru

IT Новости из мира ПК
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Формы си шарп

C# и Я

Работа с формами в Visual Studio C#.

В принципе, чтобы понять основы программирования в C# после изучения какого-либо объектно-ориентированного языка программирования много времени не требуется. Основные принципы ООП никто не отменял, а если понять их логику, то на изучения правил языка потребуется немного времени, а дальше – оттачивание навыков, углубленное изучение отдельных вопросов программирования и т.д., в общем, все как обычно. Проблемы начинаются, когда приходится избавляться от “вредных” привычек при переходе на C#, например от привычки работы с формами. Попробую пояснить это на простом примере, в котором рассмотрим работу с формами в Visual Studio Express C#.

Давайте создадим новый проект в Visual Studio. Для этого в главном меню студии выбираем “Файл – Создать проект” и в открывшемся окне выбираем “Приложение для Windows Forms”:

Зададим имя проекту, например, “TestApp” и нажмем кнопку “Ok”. Студия создаст нам пустое приложение, состоящее из одной формы и услужливо покажет нам её конструктор:

Теперь создадим ещё одну форму – её мы будем вызывать по какому-либо событию. Для добавления новой формы выбираем в меню Visual Studio: “Проект – Добавить форму Windows…” в открывшемся оке необходимо выбрать “Форма Windows Forms” и задать её имя:

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

Теперь разберемся как показать вторую форму пользователю. Те, кто немного знают Delphi могут сказать “Что может быть проще – добавил в uses модуль и вызывай”. Действительно проще некуда, но не совсем так просто как в Delphi. Объясню на примере.

Бросаем на первую форму кнопку Button. Затем переходим в окно “Свойства”, выбираем “События” и двойным кликом мышки, напротив события Click создаем новый обработчик:

Вначале, попробуем написать в обработчике следующий код:

Сразу же получим внятное сообщение об ошибке:

» Ошибка 1 Для нестатического поля, метода или свойства «System.Windows.Forms.Control.Show()» требуется ссылка на объект … «

Почему так? Дело в том, что, работая в Delphi мы могли не задумываться над тем почему, приведенный выше код мог работать без проблем – там Form2 – глобальная переменная класса TForm2. И эта переменная уже проинициализирована. Тут может быть несколько мнений, кто-то скажет «Это удобно, быстро», другой – «Глобальные переменные – зло». Разработчики С# относятся как раз к «другим» и я с ними согласен – где возможно следует избавляться от использования глобальных переменных. Второй момент – в C# Form2 – это название класса, а мы, следуя “вредной” привычке из Delphi могли предположить, что это переменная. Отсюда и ошибка. Добрались до сути. Осталось найти решение. А решение довольно простое – надо создать переменную и работать с ней:

Теперь все заработает нормально. Запускаем приложение, жмем кнопку и получаем вторую форму:

Как открыть вторую форму в модальном режиме, т.е., чтобы нельзя было переключиться на первую, пока вторая открыта. Для этого необходимо вызвать метод ShowDialog(). Можно так:

Взаимодействие форм с передачей параметров

Постановка задачи

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

Предлагаю простейший способ такого взаимодействия через статическую переменную.

Напомним, что для создания и отображения окна, используют экземпляры (переменные) класса Form, и методы Show() и ShowDialog(). Метод Show() отображает обычное окно, а ShowDialog — модальное.

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

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

Решение задачи

В пространстве имен проекта объявим структуру:

В классе Form1 объявим статическую переменную:

На Форму 1 поместим кнопку button1 («Ввод логина и пароля») и элемент groupBox1 с заголовком «Результат: Логин+Пароль с Формы 2» и на нем элемент textBox1 для отображения результата ввода. Добавим в проект новую форму (Form2).

Вид главной формы (Форма 1):

Рисунок 1.

Обработчик события button1_Click зададим в виде:

На Форму2 поместим две надписи (Label) и два элемента класса TextBox для задания имени и пароля, а также кнопку «Сохранить».

Рисунок 2.

Обработчик события button1_Cick (имя кнопки на Form2 совпадает с именем кнопки на Form1, но это разные кнопки) зададим так:

Программа готова. Полностью тексты файлов Form1.cs и Form2.cs представлены ниже.

При запуске программы открывается Форма 1 (рисунок 1). После нажатия кнопки «Ввод логина и пароля» открывается диалоговая Форма2 (пока она не закрыта, Форма 1 недоступна). На Форме 2 введем имя (Newton) и пароль (Isaak) пользователя и нажмем кнопку «Сохранить». Форма2 закроется, а в окне текстового редактора textBox1 мы увидим введенные логин и пароль:

Читать еще:  Разветвляющиеся вычислительные процессы паскаль

Теперь на Форме1 вам доступны оба поля переменной LogPar: login и parol.

Поставленная задача решена. Используйте пример для своих приложений.

Формы си шарп

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

Начнем с будущей формы нашей формы (извините уж за тавтологию). Я выбрал такую – просто нарисовал в паинте, вы можете выбрать любую другую в интернете или тоже нарисовать самостоятельно.

Теперь создаем проект в Visual Studio (неважно, каким вы пользуетесь — Visual Studio 2015, 2013, 2010 – алгоритм действий одинаков для всех этих сред разработки) «Приложение Windows Forms». В проекте по умолчанию создается форма, у неё изменяем свойство FormBorderStyle на значение None.

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

Далее требуется убрать фон у формы. Это сделаем с помощью свойства TransparencyKey – там требуется выбрать цвет, который обрамляет наш «пузырь», в данном случае это White, белый.

Теперь мы можем запустить проект и увидим, что получили непрямоугольную форму – как и требовалось. Однако, мы ничего сделать с ней не можем – пропали кнопки управления (да и на самом деле, где они могут быть?): не получится закрыть или переместить. Проблема решается просто.

Создаем на форме новый элемент – кнопку (Button) и вешаем на него обработчик событий

Теперь, при нажатии, форма будет закрываться, а приложение завершаться. Однако, наша непрямоугольная форма все еще не перемещается. Данная проблема тоже имеет решение. Для начала зададим пару переменных:

Дальше нам надо создать три обработчика: MouseDown, MouseMove и MouseUp.

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

Вместо послесловия. Создание красивой, оригинальной программы – это не так уж сложно. Буквально за несколько часов можно создать интересную, уникальную программу, аналогов которой нет. Например, можно создать приложение для компьютера (или телефона) девушки, которое будет показывать слайдшоу с музыкой и выбранным фото. Или именная игра — все зависит только от вашей фантазии. А если вы не умеете писать программы, то всегда можете их заказать мне. Поверьте, цены вас приятно удивят. Пишите – up777up@yandex.ru или добавляйтесь в скайп up777up2 – мы вместе сделаем любую программу.


Автор этого материала — я — Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML — то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

статьи IT, си шарп, формы, Visual Studio

2.2 Создание первого оконного приложения в .NET. «Убегающее окно».

Необходимые знания:

Создавая данную программу, мы рассмотрим основные принципы создания оконных приложений в C#, а также методы реализации с помощью них каких-либо конечных целей: в нашем случае — это забавно убегающее окно.

Создайте новый проект, в качестве типа шаблона установите приложение Windows Forms, как показано на рисунке 1:
Рисунок 1. Создание нового проекта.
Назовите проект RandWindow и нажмите кнопку ОК.

Рабочее окно MS Visual Studio содержит следующие вспомогательные окна (рис. 2).
Рисунок 2. Вспомогательные окна.
На рисунке цифрам отмечены:

  1. Окно Toolbox (Панель элементов управления) — элементы управления вы можете разместить на создаваемой форме.
  2. Окно Solution Explorer (Обозреватель решений) — здесь вы сможете увидеть следующие узлы: Properties — настройки проекта, Links (Ссылки) — подключенные к проекту библиотеки, а также созданные и подключенные к проекту файлы исходных кодов (с расширением .cs) и подключенные к проекту формы (например, Form1).
  3. Окно Class View (Окно классов) — здесь представлены все созданные в программе классы.
  4. Окно Properties (Свойства) — выбрав любой элемент управления или даже форму, вы сможете увидеть все параметры данного объекта, а также изменить значения, установленные в них по умолчанию.

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

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

Итак, после того как вы ввели имя проекта, установили необходимый шаблон и нажали кнопку ОК, MS Visual Studio автоматически создаст каркас оконного приложения, после чего мы сможем добавить на него новые оконные элементы.

Для этого необходимо перетащить необходимый оконный элемент из окна инструментов (ToolBox).

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

Читать еще:  Библиотеки си шарп

В центре окна будет находиться надпись, которую мы создадим с помощью элемента Label.
Снизу будут расположены 2 кнопки.

Немного растяните заготовку окна. Если вы нажмете на него правой кнопкой, то откроется контекстное меню. В нем нажмите на пункте свойства, после чего вы сможете изучить различные параметры окна, которые вы можете изменить. На рисунке 3 изображены самые (как правило) необходимые свойства:
Рисунок 3. Различные свойства окна (формы) в C# .NET.
Немного растяните заготовку окна и добавьте все необходимые элементы. На рисунке 4 вы можете увидеть их в окне ToolBox:
Рисунок 4. Перетаскивайте необходимые элементы из окна Toolbox на создаваемую форму.

Перейдите в свойства строки Label1, где измените текст на «Вы стремитесь сделать мир лучше?». Также измените тип шрифта, для этого найдите свойство Font (рис. 5).
Рисунок 5. Свойство Font элемента Label.
После чего установите тип шрифта Tahoma, ширину шрифта Bold и размер равный 16 (рис. 6).
Рисунок 6. Установки шрифта.
Далее измените текст на кнопках, используя свойство Text.

Полученная заготовка окна программы будет выглядеть следующим образом (рис. 7).
Рисунок 7. Форма будет выглядеть следующим образом.

Техническая часть работы программы

  1. Сначала мы добавим обработчик события перемещения мыши и реализуем вывод ее координат x и y в два созданных поля ввода.
  2. Далее мы создадим функции обработчики щелчка по каждой из клавиш мыши (особенно усердные пользователи все же смогут попасть по кнопке «Да, конечно!»).
  3. Далее мы добавим код, реализующий случайное перемещение окна в том случае, если курсор приблизиться к кнопке «Да, конечно!».

Определение перемещения указателя мыши по форме

Щелкните непосредственно на части формы создаваемого приложения (НЕ на одном из элементов).

Теперь перейдите к свойствам формы с помощью щелчка правой кнопки мыши -> контекстное меню свойства.

Теперь необходимо перейти к списку возможных событий, которые может получать данное окно. Для этого щелкните на кнопке «Event» (события), как показано на рисунке 8:
Рисунок 8. Переход к списку возможных событий.
Когда пользователь передвигает указатель мыши по нашему окну, операционная система посылает сообщение программе с текущими координатами указателя. Они-то нам и нужны.

Чтобы назначить обработчик данного события, найдите строку MouseMove (рис. 9), после чего сделайте двойной щелчок в поле справа от нее – автоматически добавится обработчик события движения мыши и добавится функция Form1_MouseMove в коде нашей программы.
Рисунок 9. После двойного щелчка справа от MouseMove появиться данная строка, и автоматически совершится переход к коду функции-обработчика данного события.
Добавьте в эту функцию 2 строки, чтобы ее код стал выглядеть следующим образом.

Данная функция, обрабатывающая событие перемещения указателя мыши над формой, получает 2 параметра: объект отправитель и экземпляр класса MouseEventsArgs, содержащий информацию о координатах указателя мыши и других текущих свойствах.

textBox1 и textBox2 это экземпляры класса textbox, реализующие управление нашими элементами поля для ввода.

Член данных экземпляров Text позволяет установить текст в данных полях.

Таким образом, если теперь откомпилировать программу (F5), при перемещении указателя мыши по форме окна мы будем видеть координаты указателя (внутри формы), которые будут непрерывно изменяться.

Теперь вернемся к заготовке нашей формы. Для это щелкните на соответствующей закладке (Form1.cs [Конструктор]), как показано на рисунке 10:
Рисунок 10. Переход к конструктору форм C#.
Сделайте двойной щелчок по первой кнопке: Visual Studio автоматически добавит код обработки данной кнопки при нажатии.

Добавьте следующие строки кода:

Теперь снова вернитесь к конструктору и добавьте вторую кнопку, также с помощью двойного щелчка по ней.

Она будет содержать следующий код:

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

Теперь нам осталось только реализовать перемещение окна в тот момент, когда мышь приближается к кнопке «Да, конечно».

Для этого мы добавим код в функцию:

private void Form1_MouseMove(object sender, MouseEventArgs)

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

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

Также нам понадобится объявить несколько «рабочих» переменных, которые мы будем в дальнейшем использовать.

Генерация случайных чисел

Класс Random в C# представляет собой генератор псевдослучайных чисел — т.е. данный класс отвечает за выдачу последовательности чисел, отвечающую определенным статистическим критериям случайности.

Random rnd = new Random();

Здесь мы объявили экземпляр класса Random (rnd), с помощью которого мы будем генерировать случайные числа. В дальнейшем мы будем использовать код, вида rnd.Next (диапазон_генерации) или rnd.Next (от, до -1) для генерации случайного числа.

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

Читать еще:  Символьная матрица паскаль

tmp_location объявляется для того, чтобы в будущем временно хранить текущее положение окна.

Также нам следует подумать о том, что при случайном перемещении, наше окно может выйти далеко за пределы экрана.

Чтобы определить разрешение экрана в C# .NET, мы будем использовать:

_h и _w будут хранить в себе размеры экрана пользователя, которые определяются при их инициализации.

Теперь код этой функции будет выглядеть следующим образом:

Вот, собственно, и все. Откомпеллировав приложение, можете попробовать нажать на кнопку «Да, конечно». Это будет крайне трудно.

C# WinForms

Уроки C# .NET Windows Forms / #1 — Создание приложения на C#

Видеоурок

Полезные ссылки:

Информация про C#

Благодаря незаурядной мощности языка, на него пал выбор разработчиков движка Unity . Сегодня является одним из топовых движков для игр на Windows. Выпуск и активное использование движка пошли на руку C#, который стал ещё популярнее.

После базового изучения принципов работы с языком и его синтаксисом, можно сразу перейти к углублённому изучению библиотек и смежных технологий. Большинство современных проектов пишутся с их привлечением, на чистом C# работают редко.

Если сравнить С# с прочими языками, его можно назвать довольно молодым, хотя за плечами уже пройден немалый путь. Впервые полноценная версия языка появилось после выхода Microsoft Visual Studio .NET, событие датируется февралём 2002 года. На сегодня актуальная версия — C# 7.0, выпущенная 7.03.2017 параллельно с Visual Studio 2017.

В C# используется синтаксис, сильно напоминающий Си и приближённый к С++ , Java . Если есть познания в одном из перечисленных языков, изучить C# станет значительно легче.

C# это объектно-ориентированный язык, который немало позаимствовал из С++ и Java. Для примера, С# обладает поддержкой наследственности, полиморфизма, повторную загрузку операторов, статической типизации. Такой подходит помогает в решении распространённых задач в сфере разработки крупных приложений, сохраняющих гибкость, расширяемость и масштабируемость. C# всё ещё развивается, после каждого дополнения в языке появляются новые функции, преимущественно довольно полезные. Среди них: асинхронная работа, переменное связывание, лямбды и т. п.

Какова роль .NET?

Если речь заходит о C#, часто подразумеваются технологии, связанные с платформой .NET (WPF, ASP.NET). То же самое справедливо в обратном направлении, говоря про .NET, думают про C#. Безусловно, понятия имеют жёсткую взаимосвязь, но не являются синонимами. C# — это язык, созданный для взаимодействия с фреймворком .NET. Тем не менее .NET – это довольно широкое понятие.

Сейчас вспоминаются слова Билла Гейтса, не дословно, но смысл таков: «Платформа .NET – лучшее творение Microsoft». Может так и есть, ведь фреймворк очень мощный и постоянно используется в разработке приложений.

Ключевые черты платформы:

  • Работает параллельно с разными языками. Популярностью С# во многом обязан общеязыковой среде CLR. Сейчас платформа способна работать с С#, VB.NET, C++, F#, но и на этом список не заканчивается, ведь она работает с диалектами, что привязаны к .NET (наподобие Delphi.NET). После компиляции кода с любого из перечисленных языков, вся интерпретируется в общий язык CIL – это своеобразный ассемблер для .NET. Такой подход позволяет использовать несколько языков для создания подключаемых модулей программы;
  • Кроссплатформенность. Данную платформу реально переносить, хоть и есть отдельные ограничения. Сегодня актуальная версия фреймворка работает на всех поддерживаемых Виндовс: от Windows Vista до «десятки». За счёт проекта Mono появилась возможность разрабатывать программы под Linux (различные дистрибутивы), Android и iOS;
  • Обширная библиотека классов. .NET Framework обладает единой, унифицированной библиотекой классов, с которой работают все поддерживаемые языки. Библиотека классов пригодится при создании любых программ: от блокнота до огромного веб-сайта;
  • Масса встроенных технологий. Среда CLR в сочетании с библиотекой классов – это основа для большого пакета вспомогательных технологий. Их могут использовать все программисты во время разработки приложений. В качестве примера, при взаимодействии с базами данных можно использовать технологию ADO.NET. Во время создания графических редакторов с многочисленными функциями удобно использовать WPF. Во время веб-разработки наверняка используют ASP.NET.

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

План курса

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

Сразу стоит сказать, что для создания красивого интерфейса вам стоит взглянуть на фреймворк C# WPF. На сайте также будут уроки по данной платформе, но прежде чем к ней приступить вам необходимо будет разобраться с Windows Forms.

Дополнительные курсы

На нашем сайте вы можете найти дополнительные курсы по языку C#. Все курсы представлены на этой странице .

Большое задание по курсу

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

Ссылка на основную публикацию
Adblock
detector