Передача параметров в методы 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Передача параметров в методы



Параметры можно передавать по значению и по ссылке. Если не указано обратное, то в С# все параметры передаются по значению. Если переменная передается по значению, вызываемый метод получает копию этой переменной, а это значит, что все изменения в ней по завершении метода будут утеряны.

Для передачи параметров по ссылке в языке С# предусмотрено два ключевых слова— ref и out. Первое из них требует предварительной инициализации объекта, на который передается ссылка, а второе — не требует.

class Rectangle

{ int xPos;

int yPos;

public Rectangle()

 { xPos = yPos = 0; }

 public void GetPosition(out int x, out int y)

 { x = xPos;

у = yPos;

 }

}

class RefParamApp

{ static void Main(string[] args)

{ Rectangle rect;

rect = new RectangleO;

 int xCurrent, yCurrent;

 rect.GetPosition(out xCurrent, out yCurrent);

 Console.WriteLine("Расположение прямоугольника: ({0}, {1})”, xCurrent, yCurrent);

}}

Именованные аргументы

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

string FullName(string firstName, string lastName)

{

return firstName + " " + lastName;

}

возможны следующие вызовы, которые вернут одно и то же полное имя:

Fu1IName("John", "Doe");

FullName(lastName: "Doe", firstName: "John");

Необязательные аргументы

Параметры также могут быть необязательными. Для таких параметров должны определяться значения по умолчанию. Необязательные параметры должны располагаться последними в списке. Поэтому следующее объявление метода будет неправильным:

void TestMethod(int optionalNumber = 10, int notOptionalNumber)

{

System.Console.Write(optionalNumber + notOptionalNumber);

}

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

Требования к выполнению лабораторной работы

  1. Разработать приложение Windows Form, которое содержит на форме меню, набор RadioButton, CheckBox, кнопки, назначение которых определяется вариантом задания. Кроме этих элементов управления на форме могут располагаться другие элементы, необходимые для решения задания.
  2. В лабораторной работе необходимо разработать класс, который инкапсулирует инициализацию, обработку массива (два метода, выполняющие два задания по обработке массива) и запись его в бинарный файл.
  3. При выполнении задания необходимо использовать язык запросов LINQ, а также методы расширения LINQ.
  4.  Источниками ввода массива являются клавиатура, текстовый файл, бинарный файл. При вводе должен быть предусмотрен контроль правильности ввода.

 


Пункты меню Radio Button Check Box Button Тип эл. Задание 1 Задание 2
1 выбор задания, очистка, выход Источники ввода текст заданий Сохранить Обработка Byte Подсчитать количество элементов, больших и меньших заданного пользователем. Если пользователь не задан значения, то сравнение производить с нулем. Определить четные элементы массива
2 источник ввода, обработка выход задания о программе Сохранить Очистить Int32 Подсчитать количество положительных и отрицательных элементов   Поставить в обратном порядке элементы, начиная с первого отрицательного
3 сохранить очистить о программе выход Задания, Источники ввода Сортировать по убыванию Обработка UInt16 Подсчитать количество элементов, лежащих в диапазоне [а, б]. Если вторая граница (б) не задана, то б=10. Отсортировать элементы в массиве, начиная с первого четного
4 обработка (задан.1,задан.2), очистка выход Источники ввода текст заданий сохранить UInt32 Сумму элементов, больших заданного пользователем значения и равных ему. Если значение не задано, то принять его равным 5.   Определить четные элементы и отсортировать их в нисходящем порядке
5 обработка сохранить выход Источники ввода, задания о программе очистить Int16 Найти максимальный отрицательный и минимальный положительный элементы Сортировать элементы по убыванию  
6 Источник ввода, Очистить Выход задания сохранять при завершении Обработка, О програм- ме Int32 Найти первый отрицательный и первый положительный элементы   Элементы, большие заданного числа. Если число не задано, то сравнение производить с 10  
7 Выбор задания, сохранить выход Источник ввода О программе Обработка, Очистка float Найти первый элемент, меньший заданного значения. Если значение не задано, то меньший 5. Определить отрицательные элементы массива и вывести их в обратном порядке
8 Выбор задания, обработка выход Источник ввода сохранять при завершении Очистить, о програм- ме Int16 Определить, есть ли в массиве отрицательные элементы и элементы, равные нулю. Определить отрицательные нечетные элементы массива  
9 обработка сохранить о программе выход Источники ввода, задания Текст заданий очистить Int32 Определить, все ли элементы больше заданного пользователем значения (или большие 10, если пользователь не ввел значения)   Определить четные положительные элементы массива  
10 обработка (задан.1,задан.2), сохранить выход Источники ввода Включая диапазон очистить Byte Определить, есть ли в массиве нечетные элементы и нулевые элементы   Определить элементы, значения которых находятся в диапазоне [a,b]. если диапазон не задан, принять его [0,10].
11 выбор задания, очистка, выход Источники ввода текст заданий Сохранить Обработка UInt16 Определить, все ли элементы массива являются четными и все ли положительными Определить все нечетные элементы массива, меньшие заданного числа. Если число не задано, то меньшие 11.
12 источник ввода, обработка выход задания о программе Сохранить Очистить Int32 Найти последний четный и последний нечетный элементы   Определить все положительные элементы, большие заданного значения. Если значение не задано, то большие 10.
13 сохранить очистить о программе выход Задания, Источники ввода Текст заданий Обработка float Найти первый и последний отрицательные элементы Определить все четные элементы, меньшие заданного значения. Если значение не задано, то меньшие 10.  
14 обработка (задан.1,задан.2), очистка выход Источники ввода о программе сохранить Byte Найти первый и последний элементы, меньшие значения (меньшие 10, если значение не задано)   Определить все положительные элементы массива и вывести их в обратном порядке  
15 обработка сохранить выход Источники ввода, задания о программе очистить float Подсчитать среднее значение отрицательных и положительных элементов   Определить все элементы, кратные заданному числу. Если число не задано, то кратных 10.
16 Источник ввода, Очистить выход Задания Текст заданий Обработка, О програм- ме Int32 Подсчитать среднее значение четных и нечетных элементов   Определить все положительные элементы, меньшие заданного числа. Если число не задано, то меньших 5.
17 Выбор задания, сохранить выход Источник ввода Сортировка по убыванию Обработка, Очистка UInt32 Подсчитать среднее значение элементов, больших и меньших заданного значения (сравнение производить с 10, если значение не задано) Определить все нечетные элементы массива и вывести их отсортированными
18 Выбор задания, обработка выход Источник ввода Текст заданий Очистить, о програм- ме UInt16 Определить, все ли элементы кратны заданному числу (или 5, если число не задано) Определить все четные элементы массива и поставить их в обратном порядке
19 обработка сохранить о программе выход Источники ввода, задания Включая диапазон очистить Byte Определить сумму элементов, значения которых находятся в диапазоне [a,b]. Если диапазон не задан, то принять его [1,15]. Определить элементы, находящиеся после минимального элемента
20 обработка (задан.1,задан.2), сохранить выход Источники ввода О программе очистить Int16 Определить сумму положительных и отрицательных нечетных элементов   Определить все нечетные элементы и отсортировать их по убыванию

 


Лабораторная работа №3

Тема: Использование элементов Timer и NotifyIcon в приложении. Окна диалога. MDI-приложения

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

Теоретические сведения

Дочерние окна, окна диалога

Для добавления в проект дочернего окна в окне Solution Explorer щелкаем правой кнопкой на имени проекта и в появившемся контекстном меню выбираем Add/ Add Windows Form…В нашем проекте появилась новая форма — будем называть ее дочерней.

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

Приложение должно получить от модального диалогового окна информацию, по щелчку какой кнопки оно было закрыто — ОК или Cancel. Диалоговое окно закрывается присвоением свойству DialogResult значения одного из членов перечисления DialogResult —DialogResult.OK или DialogResult.Cancel. Метод ShowDialog передает управление приложению и возвращает значение свойства DialogResult.

Таким образом, как минимум в диалоговом окне надо реализовать обработчики события Click кнопок ОК и Cancel, присваивающие свойству DialogResult соответствующее значение. Вот обработчик для кнопки ОК.

void OkButtonOnClick(object objSrc, EventArgs args)

{

 DialogResult =DialogResult.OK;

}

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

if (dlg.ShowDialog() ==DialogResult.OK)

{…

}

В Windows Forms этот процесс немного упрощен благодаря реализации свойства DialogResult в классе Button. Если свойству кнопки DialogResult присвоено значение одного из членов перечисления DialogResult, при щелчке кнопки свойству формы DialogResult автоматически присваивается значение и форма закрывается.

 

Закрыть окно можно так: this.Close().

Существуют стандартные диалоговые окна: OpenFileDialog.

Свойство FileName задает название файла, которое будет находиться в поле "Имя файла:" при появлении диалога. Свойство Filter задает ограничение файлов, которые могут быть выбраны для открытия — в окне будут показываться только файлы с заданным расширением. Через вертикальную разделительную линию можно задать смену типа расширения, отображаемого в выпадающем списке "Тип файлов". Например, Text Files (*.txt)|*.txt|AllFiles(*.*)|*.* что означает обзор либо текстовых файлов, либо всех. Свойство InitialDirectory позволяет задать директорию, откуда будет начинаться обзор. Если это свойство не установлено, исходной директорией будет рабочий стол.

Вызов окна выбора файлов и проверка, что файл был выбран:

if (openFileDialog1.ShowDialog() == DialogResult.OK)

{…

Обращение к выбранному файлу - openFileDialog1.FileName

}

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

Еще одно стандартное окно – окно сообщений.

MessageBox.Show("Do you want save changes?",

"Message", MessageBoxButtons.YesNo, MessageBoxIcon.Question).

Возвращает значение, DialogResult.Yes или DialogResult. No.

Создание MDI-приложений

Такие программы, как блокнот и Microsoft Paint, относятся к SDI (Single — Document Interface) приложениям, способным работать только с одним документом. Другие, такие как Microsoft Word или Adobe Photoshop, поддерживают работу сразу с несколькими документами и называются MDI (Multiple — Document Interface) приложениями. Для создания такого приложения добавим в него дочернюю форму и устанавливаем свойству IsMdiContainer значение true. Цвет формы при этом становится темно-серым. Теперь в обработчике события, которое должно инициировать появление новой формы (пусть эта форма имеет имя blank), записываем следующие действия:

private void mnuNew_Click(object sender, System.EventArgs e)

{

//Создаем новый экземпляр формы frm

blank frm = new blank();

// формируем и задаем уникальное имя для формы

frm.DocName = "Untitled " + ++openDocuments;

frm.Text = frm.DocName;

frm.MdiParent = this;

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

frm.MdiParent = this;

//Вызываем форму

frm.Show();

}

Переменная openDocuments должна быть объявлена в классе главной формы, а переменная DocName - в классе frm как public string DocName = "".

Метод LayoutMdi определяет, как дочерние окна будут располагаться по отношению друг к другу. Он содержит перечисление MdiLayout, содержащее четыре члена:

1) ArrangeIcons переключает фокус на выбранную форму

2) Cascade - располагаются каскадом

3) TileHorizontal - располагаются горизонтально

4) TileVertical - располагаются вертикально.

 

Timer

       Таймер генерирует последовательность событий Tick().

Основные свойства элемента:

- Interval – период генерации события Tick(). Задается в миллисекундах

- Enable (bool) – разрешение работы

NotifyIcon

Некоторые программы, такие как словари и антивирусы, при запуске остаются в области уведомлений панели задач, откуда их можно развернуть, дважды щелкнув на иконке приложения (рис.1а). Элемент управления NotifyIcon и представляет собой отображение запущенного приложения в области задач.

                     

Рис.1а                         Рис. 1б                                Рис. 1в

Обычно при нажатии правой кнопкой мыши на элементе в области уведомления появляется контекстное меню, предлагающее открыть или скрыть приложение (рис.1б). Поэтому для работы с этим элементом на форму необходимо положить кроме элемента NotifyIcon, еще элемент контекстного меню ContextMenu. Свойства этих элементов задаются следующим образом:

Изображение, используемое в качестве иконки (свойство Icon) элемента NotifyIcon, будет выводиться в область уведомлений, когда свойство notifyIcon1.Visible=true. Значение свойства Text представляет собой текст всплывающей подсказки, появляющейся при наведении курсора на иконку приложения (рис.1в).

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

private void Form1_Resize(object sender, EventArgs e)

   {

       if (WindowState == FormWindowState.Minimized)

       {

           notifyIcon1.Visible = true;

           Hide();

       }

   }

Требования к лабораторной работе:

 Разработать MDI-приложение, позволяющее открывать дочерние окна, выполняющие задание согласно варианту. Для каждого задания предусмотреть его запуск, паузу, останов. Предусмотреть окно параметров, открывающееся как модальное. При сворачивании главного окна в системной области задач должна появиться иконка приложения. Контекстное меню иконки должно включать пункты Закрыть приложение, Развернуть приложение и О программе. Варианты заданий предполагают использование таймера.

Варианты заданий к лабораторной работе

Задание Параметры Примечание
1 Будильник Время сигнала Показывать текущее время
2 Таймер Время использовать ProgressBar
3 Напоминание о дне рождения Имя, дата Показывать оставшееся количество дней
4 Калькулятор Время бездействия Закрывать по истечении времени бездействия
5 Электронные часы Точность (в секундах)  
6 Отображение оставшегося времени до конца суток Интервал обновления (в секундах) использовать ProgressBar
7 Отображение времени работы данной программы Формат вывода (секунды, минуты, мин:сек)  
8 Вывод различных афирмаций через определенное время с возможностью приостановить эти действия Интервал вывода Фразы считывать из файла
9 Вывод оставшегося до конца пары времени время окончания пары, интервал обновления (в секундах)  
10 Отображение времени, прошедшего с начала пары Время начала пары использовать ProgressBar
11 Просмотрщик фотографий Время обновления, имена файлов Смена фотографии через заданное время
12 Генератор случайных чисел Диапазон, интервал генерирования Через заданный диапазон выдается очередное число из заданного диапазона
13 Вывод текста напоминания Текст напоминания, Время В заданное время выводится напоминание
14 Программа, которая подает звуковой сигнал через заданное время Интервал подачи сигнала  
15 Программа, которая через заданное время выдает число (с помощью генератора случайных чисел), пользователь должен за 2 секунды ввести в поле ввода следующее за данным число. Интервал генерирования чисел Выдается сообщение о правильности ввода. Если ввода не последовало, в следующий раз выведется это же число.
16 Программа, которая через заданное время показывает слово. Пользователь должен написать это слово с переставленными в обратном порядке буквами. В зависимости от того, сколько времени ему потребовалось для этого, выдается результат (2 сек – отлично, 3 – 5 сек – хорошо, больше 5 сек – плохо). Файл для выбора слов, интервал вывода слова слова загружаются из заданного файла по кругу.
17 Программа, которая через заданное время выдает сообщение о том, сколько времени остается до заданного события. событие и его время  
18 Программа, которая задает пример на выполнение арифметической операции через определенный интервал времени. Операция, Интервал вывода примера Операнды выбираются с помощью генератора случайных чисел. Выдается сообщение о правильности ответа.
19 Программа, которая через каждые 5 секунд выводит слово из заданного списка. Пользователь должен написать это слово на английском языке. Программа выдает сообщение о правильности его написания (если неправильно – выдается правильный вариант). слова и их перевод В конце работы программа выводит количество правильных и неправильных ответов.
20 Программа, которая через заданное время показывает изображение из списка изображений, указанного в параметрах. Интервал смены изображения, Список имен файлов с изображениями  

Вопросы к защите лабораторной работы №3

1. Организация работы с таймером.

2. Работа с элементом NotifyIcon.

3. Организация работы с контекстным меню.

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

5. Принципы создания MDI‑приложений.

6. Способы расположения дочерних окон в MDI приложении.

7. Отличительные особенности модальных и немодальных диалоговых окон.

8. Способы закрытия модальных диалоговых окон и возврата ими результата работы.


Лабораторная работа №4

Тема: Разработка приложения на языке программирования C# с помощью платформы WРF. Контейнеры компоновки. Графика. Пользовательские элементы управления.

Цель: Освоить основные методы разработки приложений на основе платформы WРF, работы с графикой и разработки пользовательских элементов управления.

 

Теоретические сведения

Наряду с Windows Forms и GDI+ для построения настольных графических интерфейсов, начиная с версии.NET 3.0, также предлагается альтернативный API-интерфейс под названием Windows Presentation Foundation (WPF).



Поделиться:


Последнее изменение этой страницы: 2021-07-18; просмотров: 74; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.141.29.145 (0.059 с.)