Visual Basic с нуля. Глава1. Форма.
Visual Basic с нуля. Глава1. Форма.
Часть 1. Основы Visual Basiс |
||||||
02.10.2004 | ||||||
Глава 1. |
||||||
Форма. |
||||||
Загружай VB, и в путь. При этом очень советуем иметь ПРОГРАММНЫЕ МИНИАТЮРЫ, которые можно заказать по [email protected].Они просто необходимы,когда придется читать текст повторно, без лирики. Итак, создаем первый “Стандартный EXE” (как в Главе 1). На экране имеем примерно такую картинку:
Рисунок 2.
Теперь мы найдем место, куда будем заносить собственно программу. Для этого в верхнем ряду окна нажимаем кнопку “Вид”. В выпавшем меню первая строка и есть та, которая нам нужна: “Код”. Показано на рисунке 3.
Рисунок 3.
У нас поверх окна формы Проект1 – Form1 (Форма) появится окно Проект1 – Form1 (Код). Вверху этого окна у нас имеется два выпадающих списка. Слева — список доступных объектов, справа – события для этих объектов. Объектов у нас сейчас два: (General) и Form. Выбираем строку Form.
Private Sub
Form_Load()
говорит о том, что мыначинаем подпрограмму (Private Sub) или правильней процедуру, которая будет выполняться при загрузке (_Load) нашей формы (Form). Загрузка — это возникающее событие, на которое и отреагирует эта процедура. Последняя строка
End
Sub
просто говорит о том, что этой строкой процедура Form_Load завершается.
Вот только выполнять-то пока нечего. В теле процедуры у нас нет ничего. А поэтому мы сейчас туда чего-нибудь напихаем. Первым делом, выведем на нашу форму какой-нибудь текст. По идиотской традиции, самая первая программа должна выводить на экран надпись типа “Hello, world” («Здравствуй, мир»). Мы же, из чувства противоречия, напишем “Я стану программистом”. Для этого вписываем между двух уже имеющихся у нас строк еще одну.
У нас получится вот такая процедура:Private
Sub
Form_Load()
Form1.Print "Я стану программистом"
End Sub
Строка, которую мы только что вписали в процедуру, представляет собой оператор, в котором первое слово Form1 представляет собой объект с которым мы работаем (не даром Visual Basic — это объектно-ориентированный язык). В нашем случае объект — это форма. Второе слово после точки (Print) представляет собой метод, который мы используем, для того чтобы работать с нашим объектом (формой). Наш метод позволит напечатать на объекте данные, которые следуют далее. Так как строка «Я стану программистом» — текстовая, то она взята в кавычки. Таковы правила языка Visual Basic — то бишь синтаксис.
Теперь можно бы посмотреть как это работает, только ни черта у нас не выйдет. Чтобы эта надпись появилась в форме, надо залезть в окно “Свойства – Form1”. На рис. 2 (см. выше) оно подписано как “Свойства выделенного объекта”. Затем в левой колонке найти строчку со свойством “AutoRedraw”. В этой строке только в правой колонке из выпадающего списка выбрать “True”. Теперь окно перерисуется вместе с нашим чудесным текстом и мы сможем увидеть изменения формы после выполнения программой нашего оператора. Нажмем кнопочку со стрелочкой для запуска нашей программы (показано на рис.4) и наслаждаемся ее работой.
Рисунок 4.
Свойство перерисовки, как и всякое другое можно задавать программно. Это намного правильней, так как в ходе выполнения программы часто приходится менять свойства объектов. Перед нашей строчкой добавим еще одну:
Form1.AutoRedraw
= True
А в свойствах формы вернем состояние свойства AutoRedraw с True (Истина) на False (Ложь). Запустим программу. Она работает совершенно также. Аналогично можно менять другие свойства формы. В дальнейшем по мере необходимости мы будем обращаться к ним.
Ясное дело, форму можно растягивать. Можно также менять ее положение на экране, двигая квадратик в окне “Размещение формы”.
Еще одно. Можно создавать несколько форм и управлять объектами одной из другой. Для этого в меню выберите “Проект – Добавить форму – Открыть”.
Только если после этого запустить программу, второй формы не увидишь. Чтобы сделать ее видимой, надо прописать в Form1 такой код:
Form2.Show
Теперь наш проект надо сохранить. Выбери “Файл – Сохранить проект” или нажми на изображение дискетки. Появиться окно сохранения проекта, которое обычно предлагает путь «C:\Program Files\Microsoft Visual Studio\VB98». Но туда сохранять ни в коем случае не надо, иначе файлы твоего проекта перпутаются с файлами Visual Basic. Лучше создать отдельную папочку с названием, которое отражает суть проекта и сохранить проект в ней. Так надо поступать с каждым проектом. Мы будем сохранять файлы под теми же именами, которые предлагает VB, хотя их, конечно, можно задавать какие угодно.
Последний этап – создание выполняемого (т.е. EXE) файла, то ради чего мы это все делали. Нажми “Файл – Создать Проект1.exe…”, сохраняй и готово. Теперь ты можешь закрыть VB и запускать свой EXE-файл. Поздравляю! Ты создал первую программу на Visual Basic. Вариант этой программы, только несколько расширенный, я привожу ниже. В ней показано изменение некоторых свойств формы. Скопируй ее в тело подпрограммы и поэкспериментируй с ней. Обрати внимание на комментарии. Они выделяются зеленым цветом и пишутся после апострофа. Нужны они только для пояснений, не компилируются и программой не выполняются.
‘******вот некоторые возможности работы с формой*****
Private Sub
Form_Load()
Form1.BackColor = vbBlack 'меняет цвет формы 1
на черный
Form1.ForeColor = &HFF& 'меняет цвет текста
формы 1 на красный
Form1.BorderStyle = 3 'меняет рамку (бордюр) формы
1 на неизменяемую
Form1.Font.Size = 18 'меняет размер шрифта формы
1 на 18
Form1.Font.Underline = True
'подчеркивает текст в форме 1
Form1.Caption = "Моя первая программа" 'устанавливает
заголовок формы 1Form1.Print "Я
стану программистом" 'выводит текст на форму 1
Form2.Show 'делает видимой форму 2
Form2.Width = 9000 'устанавливает ширину формы
2 равной 9000 твипов
Form2.WindowState = 1 'сворачивает форму 2
End Sub
|
|
Сайт создан в системе uCoz
Как обновить содержимое Form2 из Form1
← →
iea
(2002-03-04 11:02) [0]
Уважаемые Мастера! Я создаю Form1, которая вызывает Form2. Требуется: при нажатии на кнопку в Form2 «Применить» перерисовать Form1, НЕ ЗАКРЫВАЯ Form2. Какое сообщение надо передать Form1? И если не затруднит, приведите, пожалуйста пример.
iea (2002-03-04 11:05) [1]
Извините, вопрос не совсем точно сформулирован.
Правильно: как обновить содержимое Form1 из Form2?
← →
Андрей Сенченко
(2002-03-04 11:06) [2]
Не надо никаких сообщений на мой взгляд. Просто ставишь в UNIT2
USES
UNIT1
И в процедуре обработки нажатия кнопки на Form2 пишешь
Form1.Repaint // ( или чего Ты там запланировал )
← →
Sasha9
(2002-03-04 11:08) [3]
Form1. Refresh/Repaint/Update
← →
Alx2
(2002-03-04 11:11) [4]
Или Form1.Invalidate 🙂
← →
iea
(2002-03-04 11:34) [5]
Не совсем так :(
Для наглядного образца: сама IDE Delphi. Можно вызвать настройку редактора, изменить фонты, цвета и т.д., и применить к самому редактору, не закрывая самой же настройки.
Вопрос стоит так:
В Form1 стоит uses Form2
Из Form1 вызываю Form2. Произвожу манипуляции. Надо: не закрывая Form2, применить изменения к Form1. Как это сделать? Вариант с закрытием Form2 реализован. А без закрытия? Нельзя же из Form2 вызывать, например, метод Form1.ChanhePaint (выдуманный). Быть может, послать сообщение?
← →
Alx2
(2002-03-04 11:41) [6]
>Нельзя же из Form2 вызывать, например, метод Form1. ChanhePaint
Почему? Можно.
Есть другой вариант: перед показом Form2 заполняешь ее поле (заранее созданное поле типа TForm1) Form2.UpdateToForm:=Form1;
Потом, в обработчике на кнопке «Применить» Form2 пишешь UpdateToForm.ChanhePaint
← →
iea
(2002-03-04 11:52) [7]
Спасибо. Хочу уточнить:
Есть Form1. Назовем ее мамой. И есть Form2 — это дочка. И когда я вызываю Form2, она может обращаться к свойствам и методам Form1? Просто меня это удивляет, ибо получаем кольцеобразные ссылки, т.к. ранее в Form1 есть ссылка на Form2 в виде uses. А чтобы вызвать метод или свойство Form1 из Form2, в Form2 надо сослаться на Form1. Разве это возможно? Понятно, что мама ссылается на дочку, но может ли дочка ссылаться на маму?
← →
Alx2
(2002-03-04 12:05) [8]
Может.
Просто второй модуль подключи в uses после implementation
← →
lipskiy
(2002-03-04 15:38) [9]
Любая форма может ссылаться на любую, и при некорректно построенном коде реально можно зациклиться 🙂 За этим надо следить самому.
winforms — Разница между form1.cs, form1.designer.cs и program.cs в С#
спросил
Изменено 9 лет, 3 месяца назад
Просмотрено 18 тысяч раз
У меня нет опыта работы с C#, и извините, если это слишком простой вопрос, но это поможет мне лучше понять мою домашнюю работу.
Мне нужно сделать какое-то приложение C# в Visual Studio, и мой главный вопрос: какая часть кода находится в каком файле: form1. cs, form1.designer.cs или program.cs?
Я думаю, что Visual Studio генерирует код в Form1.designer.cs и что я не должен его менять, если в этом нет необходимости, в form1.cs есть функция, которая активируется при нажатии на какой-либо элемент формы, а в program.cs есть основная часть приложения.
Я прав, и есть ли что-то еще, что я должен знать об этих файлах в начале?
Большое спасибо за ответы.
- c#
- winforms
- визуальная студия-2012
1
Да, вы в основном правы, однако:
form1.cs — это файл кода программной части формы Windows. Это файл класса окон форма, в которой написаны необходимые методы, функции, а также методы и коды, управляемые событиями.
form1.designer.cs — это файл конструктора, в котором инициализируются элементы формы. Если какой-либо элемент перетаскивается в окно формы, то этот элемент будет автоматически инициализирован в этом классе.
Program.cs является основным приложением. Это будет выполняться первым при запуске приложения.
2
Ну,
form1.cs: Это ваш код, события и пользовательский код, который вы пишете здесь.
form1.designer.cs: Код компонентов на формы окна. Вам это нужно, и вы не можете удалить. Новичкам не рекомендуется изменять его вручную.
program.cs: В C# для запуска программы он ищет статический класс, который содержит статический метод с именем
main(string[] args)
и запускает выполнение программы в этой области. Здесь, в приложении Windows Forms, код создает форму и открывает ее, чтобы пользователь начал использовать приложение.
Каждый раз, когда вы создаете форму, вы видите, что у вас есть файл .cs
и .designer.cs
, и каждый раз, когда вы перетаскиваете элемент управления из панели инструментов или изменяете какое-либо свойство в окне свойств, 0067 Файл . designer.cs
будет изменен.
0
program.cs
— это статический класс, который содержит только один статический метод, необходимый для запуска вашего приложения. Из MSDN:
Каждое приложение C# должно содержать один метод Main, указывающий где должно начаться выполнение программы.
Если ваш проект представляет собой просто библиотеку, то вам не нужно Main()
— метод в вашем коде и program.cs
не будет сгенерирован
О form1.cs
и form1.designer.cs
— это один класс form1
, определение которого разбито на два файла кода. Из MSDN о частичном классе:
Можно разделить определение класса или структуры, интерфейс или метод над двумя или более исходными файлами. Каждый исходный файл содержит раздел определения типа или метода, и все части объединяются при компиляции приложения.
Итак, эти два файла имеют код одного и того же класса.
Вы можете написать код инициализации элемента управления в своем form1.cs
. Но нужно помнить, что файл form1.designer.cs
будет генерироваться всегда, когда вы вносите изменения через конструктор VisualStudio
0
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя адрес электронной почты и пароль
Опубликовать как гость
Электронная почта
Обязательно, но не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Форма 1 – Мощный и сложный инструмент для решения проблем с психическим здоровьем
В Онтарио процесс принудительной госпитализации является одним из самых эффективных инструментов, доступных врачам для безопасного лечения серьезных проблем с психическим здоровьем. Этот процесс сложен и часто минимально понимается клиницистами в различных условиях.
Как описано в статье Смита и др. ( стр. 228–234), Форма 1 может быть заполнена только врачом на основании оценки риска, включающей причинение вреда себе, вред другим или неспособность позаботиться о себе. Предполагается, что эти факторы риска являются результатом психического заболевания, которое напрямую влияет на текущее психическое состояние и поведение пациента. Заполнение формы 1 указывает на то, что все другие разумные варианты (кроме госпитализации) были рассмотрены.
Кроме того, в Форме 1 врачи должны выбрать один из двух компонентов: «Ячейка A — Тест на серьезный вред» или «Ячейка B — Пациенты, которые не могут дать согласие на лечение и соответствуют указанным критериям». В блоке A основное внимание уделяется прошлому, настоящему и будущему риску причинения вреда, в то время как в блоке B рассматривается знание того, что у пациента установлено психическое расстройство, состояние которого улучшилось благодаря лечению, и что без лечения он представляет серьезную опасность для себя или других и становится недееспособным. согласия на лечение. Лицо, указанное в Форме 1 в графе А, считается не пациентом, а скорее «заключенным» в соответствии с Законом Онтарио о психическом здоровье, а Форма 1 разрешает только задержание и содержание под стражей. Лицо, указанное в Форме 1, по-прежнему может отказаться от лечения (за исключением чрезвычайных ситуаций или обстоятельств, угрожающих жизни) и отказаться от участия в обследовании, хотя, если оно допущено в рамках «Ячейки B», оно считается неспособным дать согласие на лечение. По истечении 72-часового периода содержания под стражей и наблюдения врач (кроме того, кто заполнил форму 1) должен повторно осмотреть лицо и определить необходимость дальнейшего подтверждения в форме 3. Если подтверждение невозможно, лицо должно быть проинформировано, и если считается, что он / она способен дать согласие на лечение в соответствии с определением дееспособности Закона о согласии на медицинское обслуживание Онтарио (HCCA), получить совет остаться добровольно, выписаться или разрешить выписаться из больницы вопреки медицинскому совету. Если считается, что человек представляет опасность, необходимо заполнить форму 3 и проинформировать пациента. Затем пациент должен получить консультацию по правам и иметь право обжаловать сертификацию в наблюдательном совете.
Родители или опекуны часто обращаются в отделения неотложной помощи больниц с просьбой о госпитализации своего ребенка или подростка с нарушениями поведения. Часто проблемы являются частью основного психического заболевания, и в этом случае можно использовать Форму 1. Однако иногда поведенческие расстройства являются результатом острого ситуационного кризиса, который может не быть связан с лежащими в основе проблемами психического здоровья. Врачи могут быть вынуждены принять ребенка. Если ребенок не соответствует критериям Формы 1, важно, чтобы врач определил способность давать согласие на лечение ребенка или подростка до принятия решения о госпитализации. В Онтарио нет возраста согласия на лечение (включая госпитализацию). Если ребенок или подросток дееспособен в соответствии с HCCA, они имеют право дать согласие на прием или отказаться от него. Ребенок или подросток может быть принят против его/ее воли (независимо от возраста или желания родителей или опекунов), если он/она признаны неспособными принимать решения о лечении. Это означает, что ребенок принципиально не понимает рекомендованного лечения или вмешательства и не понимает последствий принятия или отказа от лечения. В этом случае лицо должно быть объявлено недееспособным дать согласие на лечение. В соответствии с HCCA недееспособным пациентам должен быть назначен заместитель, ответственный за принятие решений (SDM), который будет действовать от имени пациента и принимать решения о госпитализации. HCCA содержит рекомендации по назначению SDM и предусматривает, что пациент может внести свой вклад в назначение, включая право на обжалование назначения. Кроме того, HCCA считает, что пациенты в возрасте от 12 до 15 лет, госпитализированные с психиатрическим диагнозом через SDM, должны быть проинформированы о своей недееспособности (через форму 27) и получат консультацию по правам, включая право обжаловать решение о недееспособности. . Неясно, были ли эти сложности в применении Формы 1 фактором «тревожной тенденции», о которой сообщили Smith et al.
Вопросы, влияющие на решение об использовании формы 1, многогранны и часто не обязательно связаны с диагнозом пациента. Факторы риска, связанные с проблемами самоубийства, причинения вреда другим, членовредительства и ухода за собой, имеют первостепенное значение. Для этих вопросов серьезность и интенсивность мыслей, разработка планов, доступ к смертоносным средствам, уровень и компетентность надзора и готовность заключать контракты на обеспечение безопасности являются важными переменными для рассмотрения. Система поддержки пациента играет решающую роль, и отсутствие или прекращение поддержки может быть решающим фактором при госпитализации независимо от диагноза. Многие групповые дома, например, придерживаются политики в отношении суицидальных мыслей и отказываются принимать ребенка или подростка обратно, что провоцирует системный кризис, приводящий к госпитализации. Многие больницы в Онтарио разрабатывают свои собственные уникальные правила и процедуры в отношении лиц, включенных в форму 1. Иногда важную роль играет структура политики — направляется ли лицо, указанное в форме 1, непосредственно к психиатру? Ответственность лица, указанного в форме 1, возлагается на врача скорой помощи или на психиатрию? Осматриваются ли суицидальные пациенты, не указанные в Форме 1, специалистом по кризисному вмешательству или психиатром? Это может быть решающим фактором при поступлении, в зависимости от времени и наличия персонала.
В обзоре Smith et al. суицидальное поведение и поведенческие расстройства составляют примерно две трети рассмотренных форм. Множество переменных, описанных ранее, не рассматривались конкретно, когда они пытались изучить наблюдаемые тенденции.
Smith и др. указывают на множество проблем, которые могут быть связаны с более широким использованием формы 1. Службы охраны психического здоровья детей в Онтарио недофинансируются и не имеют достаточных ресурсов. Многие программы и агентства, финансируемые Министерством общественных и социальных служб Онтарио и занимающиеся вопросами психического здоровья, не получили необходимого увеличения финансирования для поддержания уровня своих услуг более десяти лет. Кроме того, мы наблюдаем значительное сокращение школьных бюджетов на психологическую и психиатрическую поддержку.
Доступ остается серьезной проблемой. Спрос намного превышает имеющиеся ресурсы, что приводит к длинным спискам ожидания. Родители, общественные организации и поставщики медицинских услуг обладают ограниченными навыками выявления пациентов с симптомами или пациентов с высоким риском, что приводит к невыявлению случаев заболевания. Сами дети и молодежь неохотно обращаются за помощью. Все больше детей сообщают о высоком уровне стресса и суицидальных мыслях. Исследование здоровья Онтарио (1) показало, что у каждого четвертого ребенка и подростка в Онтарио есть психическое расстройство, но только каждый шестой получает какие-либо услуги по поводу проблем с психическим здоровьем. Дэвидсон и Мэнион (2) сообщили, что 51% подростков в их опросе указали, что чувствуют себя «действительно расстроенными» от одного раза в месяц до «все время». Почти 20% сообщили о суицидальных мыслях, при этом пятая часть этой группы указала, что они предпринимали попытки. Только 29% будет говорить с родителями о своих проблемах.
Семьи с детьми и молодежью в Канаде сталкиваются с рядом трудных и сложных проблем, таких как растущее потребление психоактивных веществ, финансовый стресс, насилие в СМИ, проблемы сексуальности, жестокое обращение и травмы, а также мобильность семьи, которые могут способствовать усилению стресса, изоляции и ограниченная поддержка. Бедность семей и детей остается общепризнанным фактором риска возникновения проблем с психическим здоровьем.
Это лишь некоторые из множества факторов, которые помогают создавать уязвимые группы детей и молодежи, которые более подвержены стрессу, более изолированы и менее социально связаны с меньшим количеством ресурсов и поддержки. Конечным результатом является то, что все больше детей и их семей попадают в кризис с повышенной степенью тяжести, обращаясь к системе здравоохранения за поддержкой и кризисным управлением. Однако, несмотря на вышесказанное, данные в обзоре Smith et al. об использовании Формы 1 указывают больше на однолетнюю аберрацию, чем на статистическую тенденцию.
Если выводы статьи Smith et al. отражают тенденцию, то что можно сделать, чтобы обратить ее вспять? Крайне важно укреплять системы поддержки семьи, улучшать психосоциальную поддержку и вмешательства в школах, а также улучшать доступ к ресурсам охраны психического здоровья в обществе. Повышение внимания к проблемам психического здоровья среди этой группы населения может помочь уменьшить стигматизацию.
Большинству пациентов с серьезными психическими заболеваниями требуется долгосрочное участие бригад медицинских работников. Также необходимо увеличение числа смежных специалистов в области психического здоровья (социальные работники, психологи, эрготерапевты, логопеды и т. д.), которые будут работать с психиатрами. Эти поставщики часто оказывают критически важную первичную и вспомогательную помощь, поддерживая пациентов в сообществе и предотвращая кризисы, приводящие к обращениям в отделения неотложной помощи.
Было бы полезно увеличить количество детских и подростковых психиатров, но должны быть доступны более гибкие модели вознаграждения и компенсации, чтобы гарантировать привлечение и удержание специалистов в этой области. Нынешняя модель оплаты за услуги основана на процедуре и требует в основном прямого клинического контакта. Детские психиатры, помимо предоставления прямых услуг, часто могут быть более полезными, предоставляя косвенные услуги в качестве консультантов для поставщиков медицинских услуг, школ, общественных организаций и групп психического здоровья. Эти услуги в основном не покрываются платным подходом. Альтернативные планы финансирования, например, предлагают вознаграждение за различные косвенные вмешательства, которые могут помочь поддержать первичных поставщиков услуг в их сообществе.
Однако детские психиатры не могут удовлетворить спрос в одиночку. Программы обучения педиатрической и семейной практике должны больше сотрудничать с психиатрами и программами психического здоровья, чтобы увеличить подверженность резидентов и стипендиатов проблемам психического здоровья детей и подростков, чтобы их опыт в решении этих общих проблем мог улучшиться, потенциально уменьшая количество направлений к специалистам. уже знакомые длинные очереди на получение специализированных услуг. Нам необходимо создать больше возможностей для практикующих педиатров, чтобы они могли ознакомиться с процессами оценки и вмешательствами, обычно используемыми детскими психиатрами, чтобы их уровень комфорта при ведении этих часто сложных случаев в отделении неотложной помощи или офисе мог быть выше. Альтернативные планы финансирования и новые технологии, такие как телездравоохранение, могут улучшить доступ к специалистам в области психического здоровья для образовательных мероприятий. Разработка моделей совместного ухода между педиатрами и детскими психиатрами также может улучшить доступ и обеспечить более качественную поддержку врачей при выполнении ими функций первичной медико-санитарной помощи.