- •1. Вводная часть
- •2. Знакомство со средой разработки на примере создания простого консольного приложения
- •3. Модификация консольного приложения
- •4. Публикация
- •5. О приложении к Лабораторной работе № 1
- •Лабораторная работа № 2: Создание простого приложения Windows Forms
- •Создание простого приложения Windows Forms
- •Модификация приложения Windows Forms
- •Завершающая часть
- •2. Создание простого приложения Windows Forms
- •3. Модификация приложения Windows Forms
- •4. Завершающая часть
- •5. О приложении к Лабораторной работе № 2
- •3. Лабораторная работа № 3: Windows Forms и использование некоторых элементов управления Лабораторная работа № 3: Windows Forms и использование некоторых элементов управления
- •Вводная часть
- •О приложении к Лабораторной работе № 3
- •1. Вводная часть
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms
- •4. Модификация приложения Windows Forms: элемент управления MenuStrip
- •5. Модификация приложения Windows Forms: элемент управления Button
- •6. Модификация приложения Windows Forms: элемент управления ToolTip
- •7. Модификация приложения Windows Forms: элемент управления ComboBox
- •8. Модификация приложения Windows Forms: элемент управления WebBrowser
- •9. Модификация приложения Windows Forms: добавляем исходный код
- •10. Завершающая часть
- •11. О приложение к Лабораторной работе № 3
- •4. Лабораторная работа № 4: Windows Forms — работа с формами Лабораторная работа № 4: Windows Forms — работа с формами
- •Вводная часть
- •О приложении к Лабораторной работе № 4
- •1. Вводная часть
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms
- •4. Модификация приложения Windows Forms: добавление новой формы
- •5. Модификация приложения Windows Forms: динамическое связывание параметров двух форм и передача параметра через прямой доступ к элементу формы
- •6. Модификация приложения Windows Forms: динамическое связывание параметров двух форм и передача параметра через передачу метода в конструктор формы
- •7. Модификация приложения Windows Forms: динамическое связывание параметров двух форм и передача параметра через класс делегата
- •8. Модификация приложения Windows Forms: динамическое связывание параметров двух форм и передача параметра через свойства
- •9. Завершающая часть
- •10. О приложении к Лабораторной работе № 4
- •5. Лабораторная работа № 5: Windows Forms — элементы управления Лабораторная работа № 5: Windows Forms — элементы управления
- •Вводная часть
- •О приложении к Лабораторной работе № 5
- •1. Вводная часть
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms
- •4. Модификация приложения Windows Forms: динамическое добавление и уничтожение элемента управления
- •5. Модификация приложения Windows Forms: стандартные диалоговые окна
- •6. Модификация приложения Windows Forms: открытие файла, сохранение файла и работа с текстом
- •7. Модификация приложения Windows Forms: прочее
- •8. Завершающая часть
- •9. О приложении к Лабораторной работе № 5
- •Лабораторная работа № 6: SolidWorks — работа с SolidWorks
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms: eDrawings 2012
- •4. Модификация приложения Windows Forms: организация работы с SolidWorks через приложение
- •5. Завершающая часть
- •6. О приложении к Лабораторной работе № 6
- •Лабораторная работа № 7: SolidWorks — использование SwCSharpAddin, работа с макросом и шаблоном детали
- •2. Создание приложения SwCSharpAddin
- •3. Модификация приложения SwCSharpAddin: макрос отрисовки болта
- •4. Модификация приложения SwCSharpAddin: построение через шаблон детали
- •5. Завершающая часть
- •6. О приложении к Лабораторной работе № 7
- •8. Лабораторная работа № 8: Создание простого приложения Windows Foundation Presentation Лабораторная работа № 8: Создание простого приложения Windows Foundation Presentation
- •Вводная часть
- •О приложении к Лабораторной работе № 8
- •1. Вводная часть
- •2. Создание приложения Windows Foundation Presentation
- •3. Модификация приложения Windows Foundation Presentation
- •4. Модификация приложения Windows Foundation Presentation: добавление нового элемента из библиотеки компонентов wpf
- •5. Модификация приложения Windows Forms: расширение функциональности приложения и работа с оформление
- •6. Модификация приложения Windows Foundation Presentation: различные возможности wpf
- •7. Модификация приложения Windows Foundation Presentation: немного о стилях и шаблонах
- •8. Завершающая часть
- •9. О приложении к Лабораторной работе № 8
- •Лабораторная работа № 9: Создание приложения-презентации Windows Foundation Presentation
- •2. Создание приложения Windows Foundation Presentation
- •3. Модификация приложения Windows Foundation Presentation
- •4. Модификация приложения Windows Foundation Presentation: работа с решением в Expression Blend
- •5. Завершающая часть
- •6. О приложении к Лабораторной работе № 9
- •Лабораторная работа № 10: Работа с базами данных — xml и ole
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms: odbc
- •4. Модификация приложения Windows Forms: ole
- •5. Модификация приложения Windows Forms: xml
- •6. Завершающая часть
- •7. О приложении к Лабораторной работе № 10
- •Лабораторная работа № 11: Динамическая связь приложений через библиотеку классов
- •2. Удалённый объект: создание библиотеки классов удалённого объекта
- •3. Клиент: создание приложения Windows Forms
- •4. Сервер: создание консольного приложения
- •5. Завершающая часть
- •6. О приложении к Лабораторной работе № 11
- •Лабораторная работа № 12: Автоматизация Microsoft Office Word
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms: создание и заполнение нового документа Microsoft Word
- •4. Модификация приложения Windows Forms: работа с шаблонами
- •5. Завершающая часть
- •6. О приложении к Лабораторной работе № 12
- •Лабораторная работа № 13: Автоматизация Microsoft Office Excel
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms: создание и заполнение нового документа Microsoft Excel
- •4. Модификация приложения Windows Forms: чтение данных с документа Microsoft Excel
- •5. Модификация приложения Windows Forms: прочие возможности Microsoft Excel
- •6. Завершающая часть
- •7. О приложении к Лабораторной работе № 13
- •Лабораторная работа № 14: Простой растровый редактор
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms: подготовка интерфейса редактора
- •4. Модификация приложения Windows Forms: функциональность растрового редактора
- •5. Завершающая часть
- •6. О приложении к Лабораторной работе № 14
- •15. Лабораторная работа № 15: Векторный редактор изображений Лабораторная работа № 15: Векторный редактор изображений
- •Вводная часть
- •О приложении к Лабораторной работе № 15
- •1. Вводная часть
- •2. Создание решения, приложения Windows Forms и библиотеки классов
- •3. Модификация приложения Windows Forms: подготовка интерфейса редактора и добавление файлов ресурсов
- •4. О будущей функциональности векторного редактора изображений
- •5. Модификация приложения Windows Forms: подготовка библиотеки классов
- •6. Модификация приложения Windows Forms: функциональность векторного редактора
- •7. Завершающая часть
- •8. О приложении к Лабораторной работе № 15
- •Лабораторная работа № 16: Windows Communication Foundation
- •2. Создание приложения wcf:
- •3. Модификация приложения wcf: приложение-клиент для wcf-службы
- •4. Создание приложения Windows Forms: сервер чата на wcf
- •5. Создание приложения Windows Forms: клиент чата на wcf
- •6. Завершающая часть
- •7. О приложении к Лабораторной работе № 16
- •Лабораторная работа № 17: Знакомство с Silverlight
- •2. Создание приложения Silverlight:
- •3. Модификация приложения Silverlight: первые шаги и полноэкранный режим
- •4. Модификация приложения Silverlight: простой проигрыватель mp3-файлов
- •5. Модификация приложения Silverlight: работа с анимацией
- •6. Завершающая часть
- •7. О приложении к Лабораторной работе № 17
- •Лабораторная работа № 18: Знакомство с asp.Net
- •2. Создание веб-приложения asp.Net
- •3. Модификация веб-приложения asp.Net: реализация различной функциональности
- •4. Модификация веб-приложения asp.Net: ajax
- •5. Завершающая часть
- •6. О приложении к Лабораторной работе № 18
- •Вводная часть
- •О приложении к Лабораторной работе № 19
- •1. Вводная часть
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms: подготовка интерфейса и добавление TabControl
- •4. Модификация приложения Windows Forms: вкладка «Просто фон!»
- •5. Модификация приложения Windows Forms: вкладка «Объекты и градиент»
- •6. Модификация приложения Windows Forms: вкладка «Мой монитор сломался!»
- •7. Модификация приложения Windows Forms: вкладка «Векторные часы»
- •8. Модификация приложения Windows Forms: вкладка «Огонь!!!»
- •9. Модификация приложения Windows Forms: вкладка «Дождик»
- •10. Завершающая часть
- •11. О приложении к Лабораторной работе № 19
- •Лабораторная работа № 20: Inventor — работа с Inventor
- •Вводная часть
- •О приложении к Лабораторной работе № 20
- •1. Вводная часть
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms: запуск и завершение приложения Inventor
- •4. Модификация приложения Windows Forms: создание новых документов
- •5. Модификация приложения Windows Forms: доступ к элементам документов Inventor
- •6. Завершающая часть
- •7. О приложении к Лабораторной работе № 20
- •Лабораторная работа № 21: Знакомство с языком f# (Эф-шарп) на примере простого приложения для командной строки
- •Вводная часть
- •О приложении к Лабораторной работе № 21
- •1. Вводная часть
- •2. Основные положения при работе с f#
- •3. Создание приложения «Учебник по f#»
- •4. Создание консольного приложения
- •5. О приложении к Лабораторной работе № 21
- •Лабораторная работа № 22: Различные примеры на f#
- •2. Создание приложения «Приложение f#»
- •3. Модификация приложения f#: match
- •4. Модификация приложения f#: создание форм и рисование объектов на форме
- •5. Модификация приложения f#: работа с базой данных Microsoft Access
- •6. О приложении к Лабораторной работе № 22
- •23. Дополнительная лабораторная работа № 1
- •24. Дополнительная лабораторная работа № 2
- •25. Дополнительная лабораторная работа № 3
- •Вводная часть
- •1. Вводная часть
- •2. Создание приложения Windows Foundation Presentation
- •3. Модификация приложения Windows Foundation Presentation: добавление ресурсов
- •4. Модификация приложения Windows Foundation Presentation: добавление исходного кода
- •5. Модификация приложения Windows Foundation Presentation: оформление элемента ListBox
- •6. Завершающая часть
- •7. О приложении к данной работе
3. Модификация приложения Windows Foundation Presentation: добавление ресурсов
Для начала добавим все необходимые ресурсы, ими станут картинки планет.
Выделим в обозревателе решений название проекта ( ), нажнём на нём правую кнопку мыши и далее во всплывающем меню выберем Добавить -> Создать папку:
Рис. 3. 1. Создание новой директории для файлов внутри проекта
Теперь введём Planets в названии и получим новую директорию в обозревателе решений:
Теперь добавим в эту директорию изображения планет. Выполним для иконки проекта в обозревателе решений Добавить -> Существующий элемент… или в верхнем меню Проект -> Существующий элемент… (Shift+Alt+A) для всех следующих изображений:
Солнце (Sun.jpg):
Меркурий (Mercury.gif):
Венера (Venus.gif):
Земля (Earth.gif):
Марс (Mars.gif):
Юпитер (Jupiter.gif):
Сатурн (Saturn.gif):
Уран (Uranus.gif):
Нептун (Neptune.gif):
Плутон (Pluto.gif):
Получим список изображений в обозревателе решений:
4. Модификация приложения Windows Foundation Presentation: добавление исходного кода
Добавим новый класс для работы с будущим элементом управления. Для начала поработаем с ресурсами изображений. Добавим новый файл класса C# с коллекцией элементов с именем SolarSystem.cs:
Исходный код добавленного файла изначально такой:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace NewListBox.Planets
{
class SolarSystem
{
}
}
Модифицируем файл следующим образом:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections.ObjectModel;
namespace NewListBox
{
public class SolarSystem
{
// объявление коллекции динамических данных ObservableCollection<SolarSystemObject> и заполнение коллекции элементами
private ObservableCollection<SolarSystemObject> solarSystemObjects;
public ObservableCollection<SolarSystemObject> SolarSystemObjects // Свойство для работы с коллекцией элементов
{
get { return solarSystemObjects; }
}
public SolarSystem()
{
this.solarSystemObjects = new ObservableCollection<SolarSystemObject>();
/* Добавляем новые объекты типа SolarSystemObject(Название, число: удаление от солнца [а. е.], число: средний диаметр [км], ссылка на изображение внутри проекта, описание) */
this.solarSystemObjects.Add(new SolarSystemObject("Солнце", 0, 1380000, new Uri(@"Planets\Sun.jpg", UriKind.Relative), "Со́лнце — единственная звезда Солнечной системы, вокруг которой обращаются другие объекты этой системы: планеты и их спутники, карликовые планеты и их спутники, астероиды, метеороиды, кометы и космическая пыль."));
this.solarSystemObjects.Add(new SolarSystemObject("Меркурий", 0.38, 4880, new Uri(@"Planets\Mercury.gif", UriKind.Relative), "Мерку́рий — самая близкая к Солнцу планета Солнечной системы, обращающаяся вокруг Солнца за 88 земных суток."));
this.solarSystemObjects.Add(new SolarSystemObject("Венера", 0.72, 12103.6, new Uri(@"Planets\Venus.gif", UriKind.Relative), "Вене́ра — вторая внутренняя планета Солнечной системы с периодом обращения в 224,7 земных суток. Планета получила своё название в честь Венеры, богини любви из римского пантеона. Венера — третий по яркости объект на небе Земли после Солнца и Луны и достигает видимой звёздной величины в −4,6."));
this.solarSystemObjects.Add(new SolarSystemObject("Земля", 1, 12756.3, new Uri(@"Planets\Earth.gif", UriKind.Relative), "Земля́ — третья от Солнца планета Солнечной системы, крупнейшая по диаметру, массе и плотности среди планет земной группы. Наша родная планета."));
this.solarSystemObjects.Add(new SolarSystemObject("Марс", 1.52, 6794, new Uri(@"Planets\Mars.gif", UriKind.Relative), "Марс — четвёртая по удалённости от Солнца и седьмая по размерам планета Солнечной системы; масса планеты составляет 10,7 % массы Земли."));
this.solarSystemObjects.Add(new SolarSystemObject("Юпитер", 5.20, 142984, new Uri(@"Planets\Jupiter.gif", UriKind.Relative), "Юпи́тер — пятая планета от Солнца, крупнейшая в Солнечной системе. Наряду с Сатурном, Ураном и Нептуном Юпитер классифицируется как газовый гигант. Планета была известна людям с глубокой древности, что нашло своё отражение в мифологии и религиозных верованиях различных культур: месопотамской, вавилонской, греческой и других. Современное название Юпитера происходит от имени древнеримского верховного бога-громовержца."));
this.solarSystemObjects.Add(new SolarSystemObject("Сатурн", 9.54, 120536, new Uri(@"Planets\Saturn.gif", UriKind.Relative), "Сату́рн — шестая планета от Солнца и вторая по размерам планета в Солнечной системе после Юпитера. Сатурн, а также Юпитер, Уран и Нептун, классифицируются как газовые гиганты. Сатурн назван в честь римского бога земледелия."));
this.solarSystemObjects.Add(new SolarSystemObject("Уран", 19.218, 51118, new Uri(@"Planets\Uranus.gif", UriKind.Relative), "Ура́н — седьмая по удалённости от Солнца, третья по диаметру и четвёртая по массе планета Солнечной системы. Была открыта в 1781 году английским астрономом Уильямом Гершелем и названа в честь греческого бога неба Урана, отца Кроноса (в римской мифологии Сатурна) и, соответственно, деда Зевса."));
this.solarSystemObjects.Add(new SolarSystemObject("Нептун", 30.06, 49532, new Uri(@"Planets\Neptune.gif", UriKind.Relative), "Непту́н — восьмая и самая дальняя планета Солнечной системы. Нептун также является четвёртой по диаметру и третьей по массе планетой. Масса Нептуна в 17,2 раза, а диаметр экватора в 3,9 раза больше таковых у Земли. Планета была названа в честь римского бога морей."));
this.solarSystemObjects.Add(new SolarSystemObject("Плутон", 39.5, 2274, new Uri(@"Planets\Pluto.gif", UriKind.Relative), "Плуто́н (134340 Pluto) — крупнейшая по размерам, наряду с Эридой, карликовая планета Солнечной системы, транснептуновый объект (ТНО) и девятое/десятое по величине небесное тело, обращающееся вокруг Солнца. Первоначально Плутон классифицировался как планета, однако сейчас он считается одним из крупнейших объектов (возможно, самым крупным) в поясе Койпера."));
}
}
}
Теперь, добавим сам класс, обеспечивающий обработку и получение данных из коллекции элементов. Создаём новый класс с именем SolarSystemObject.cs:
Исходный код сделаем таким:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace NewListBox
{
public class SolarSystemObject
{
// Название планеты
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
// Орбита, в астрономических единицах (а. е)
private double orbit;
public double Orbit
{
get { return orbit; }
set { orbit = value; }
}
// Средний диаметр, в км
private double diameter;
public double Diameter
{
get { return diameter; }
set { diameter = value; }
}
// Относительная ссылка на изображение
private Uri image;
public Uri Image
{
get { return image; }
set { image = value; }
}
// Описание
private string details;
public string Details
{
get { return details; }
set { details = value; }
}
// Метод для работы с коллекцией элементов
public SolarSystemObject(string name, double orbit, double diameter, Uri image, string details)
{
this.name = name;
this.orbit = orbit;
this.diameter = diameter;
this.image = image;
this.details = details;
}
// Вместо new использован virtual-override
public override string ToString()
{
return this.name;
}
}
}
Немного о ключевом слове override в самом конце кода:
Рис. 4. 1. Разница между new и override (наследование и переопределение методов)
При использовании new метод класса Foo не перекрывает реализацию базового класса, а подменяет её своей (прячет её). Поэтому когда мы сохраняем переменную типа в переменной базового типа от класса Bar, мы не получим вызова override метода из класса Foo , так как не переопределяется, а подменяется метод используя new. При использовании virtual-override происходит виртуальный вызов и будет вызван переопределённый (overriden) метод из класса Bar.
Добавим последний необходимый класс для обработки положения окружностей орбит в элементе управления. Назовём его ConvertOrbit.cs:
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Data;
using System.Globalization;
namespace NewListBox
{
public class ConvertOrbit : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
double orbit = (double)value;
double factor = System.Convert.ToDouble(parameter, culture.NumberFormat); // Получаем форматирование для единиц измерения (зависит от настроек операционной системы по умолчанию, а именно от региона и региональных стандартов), parameter - получаем извне
return Math.Pow(orbit / 40, 0.4) * 700 * factor; // Возводим выражение за запятой в степень 0.4, необходимо для определения положения в элементе управления в пикселях? определяет значения для положения по X и Y, 700 - размер окна, factor - получаем извне (parameter)
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotSupportedException("Этот метод не должен быть вызван");
}
}
}