войти зарегистрироваться

Блог им. akochurovPropertyGrid в Visual Studio: отображение полей, связанных с коллекциями объектов

PropertyGrid позволяет отображать разнообразные структуры классов в удобном для редактирования виде и для этого достаточно связать с ним объект вашего класса. Однако, не все конструкции можно сразу отобразить без написания дополнительного кода.

В этой статье я хочу рассказать о своем опыте в использовании PropertyGrid в контексте:
1. Отображение выпадающего списка записей, который собой представляет коллекцию объектов.
image
2. Отображение поля, связанного с коллекцией объектов, вызывающего редактор коллекции.
image

В качестве примера я взял задачу для реализации управления информацией о сотруднике, которую реализует класс Employee.

Класс содержит два свойства. Первое — свойство типа JobTitle (должность сотрудника для выпадающего списка), второе – свойство типа JobTitleCollection (коллекция должностей сотрудников для редактора коллекции).

Задачей является отображение объекта класса Employee в PropertyGrid так, как показано на двух рисунках в начале статьи, а именно:
1. Отобразить поле, в котором пользователь сможет выбрать одну из должностей сотрудника с помощью выпадающего списка как в элементе ComboBox.
2. Отобразить поле, которое позволит вызвать редактор связанной коллекции должностей, а после завершения изменения коллекции отобразить должности в PropertyGrid в виде списка.

Решение

Блог им. devIceManEvernote API — разбираем заголовки статей с Хабра и помечаем статьи метками

Доброго времени суток, уважаемое Хабрасообщество!

В этом коротком топике я хочу рассказать Вам о своем первом знакомстве с Evernote API.
Итак, все началось примерно полгода назад, когда у меня появилось достаточно свободного времени на работе, которое я решил тратить с умом. В основном я, разумеется, читал статьи на Хабрахабре, где и встретил упоминание об Evernote. Сервис мне понравился, я начал им активно пользоваться для сохранения заметок и ссылок на статьи, которые не успевал прочитать на работе. После того, как в свой любимый Хром я установил плагин Evernote Web Clipper, отправлять ссылку на статью в Evernote стало очень просто и быстро. А потом появилось некоторое нудобство…

Game DevelopmentUnity3D + C#, или как переводить скрипты

image

На Unity3D я натолкнулся сравнительно недавно, до этого работал со своими самописными движками для мобильных телефонов на Java2ME, в остальное время я — дотнетчик.

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

Про Unity в целом тут уже писали, так что повторяться не буду, отмечу главное — разрабатываемую игру можно (а на мой взгляд — и нужно) скриптовать на C# (спасибо Mono). Единственное ограничение — следует писать в пределах .NET Framework 1.1 — только он поддерживается на iPhone. [upd: пока я писал этот пост, вышла новая версия Unity3D для iPhone, поддерживающий .NET 2.1]

Итак, ключевые плюсы для меня от использования Unity вообще и C# в частности:
  • Использование .NET Framework и C# (лично для меня это очень удобно)
  • Возможность сделать сборку сразу на iPhone и для веб-плеера (standalone сборки меня не прельщают по ряду причин, выходящих за рамки поста)
  • Уже готовые сценарии поведения на C# можно будет повторно использовать, например, при создании порта игры на XBox при помощи XNA (с изменениями, но все же)
  • Удобный интерфейс и не слишком прожорливые редакторы
  • Приемлимая цена

Минусы конечно, также имеются, но речь не за них, ибо плюсы в конечном счете перевесили.

Для скриптования используется прикрученный редактор UniSciTE на базе Scintilla, что лично мне пришлось не по душе, а потому я сразу захотел воспользоваться старой доброй Visual Studio. Вот о том, как скриптовать на C# будет речь ниже:

[upd: перенесено в Game Development]

C++"\" в конце строки в C/C++

Покажет ли ваш редактор/IDE, что «a++;» в этом C/C++ коде — часть комментария?
int a=1;
//some comment \
a++;
printf("%d\n",a);


А такой вариант?
int a=1;
//some comment ??/
a++;
printf("%d\n",a);

Разработка под Mac OS X и iPhoneMono, MonoTouch + C# vs. iPhone SDK + Objective-C

Так сложилось, что моя деятельность в качестве разработчика программного обеспечения связана как с iPhone, так и с .NET технологиями. Если говорить, что первично, то это, конечно, .NET и C#, поэтому информация будет подана с точки зрения дотнетчика.

В статье хочу рассказать о небольшем опыте разработки одного проекта одновременно на mono с использованием MonoTouch и на родном Objective-C.

Блог им. OgounИспользование SynchronizationContext для асинхронного выполнения методов

В процессе разработки собственного программного продукта у меня возникла задача выполнения второстепенных функций в дополнительных потоках, дабы не тормозить основной. Казалось бы задача проще некуда, но дополнительным условием стояла задача возврата результата выполнения в основной поток, путем вызова в нем указанного метода, который по идее должен обработать результат.
Поиск по инету выдал в первую очередь примеры использования Invoke, вещь хорошая, простая, но не подошедшая к задаче, чтобы использовать Invoke, мы привязываемся не к конкретному потоку, а к классу контрола. Соответственно в случае консольного приложения придется поизвращаться, а в случае ASP.NET приложения способ вообще отпадает. И так как очень хотелось все-таки найти универсальное решение, то поиск продолжился и выдал мне такую замечательную вещь как SynchronizationContext.
Задача кстати состоит в следующем, написать дополнение к существующей прослойке к базе данных, которое позволит ставить запросы в очередь, исполнять их в потоке и возвращать результат выполнения.