Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

В восемнадцатом выпуске рассылки '.Net Собеседник' вы можете прочесть обзор новых компонент и продуктов, разработанных с использованием платформы .Net,


Информационный Канал Subscribe.Ru

.Net Собеседник #18

Содержание
  1. От автора
  2. Обзор новостей
  3. Статья выпуска - Используем сетку свойств в C#  
  4. Время кода - Проверка дат с использованием классов .NET пространства имён Globalization
  5. Форумы .Net на www.sql.ru

От автора

Здравствуйте, коллеги!

Герой последней недели - компания Microsoft, выпустившая в свободное плавание беты своих экспресс-версий Visual Studio C#, VB.Net, SQL Server 2005, .Net Framework 2.0 и бету SDK.
Обсудить нововведения и поделиться впечатлениями можно на нашем форуме -

  1. .NET Framework 2.0 ADO.NET. Что нового?
  2. Visual Studio 2005 Whidbey, NetFrameWork 2.0 {Кто-нибудь попробовал .NET Framework 2.0?}

Удачного обсуждения и приятного чтения.

{К содержанию}

Обзор новостей

  1. Microsoft выпустила "Express"-редакцию Visual Studio
    Если вы пишете на одном языке и любите поиграться с последними инструментами от Microsoft, то специально для вас Microsoft выпустила "Express" редакции Visual Studio, которые доступны для бесплатной загрузки через MSDN. Каждая версия инструмента в этой редакции способна скомпилировать консольное приложение или приложение WinForms, а также библиотеки классов.
    В добавок к версиям, поддерживающим VB.NET (в будущем VB 8), C#, C++ и J#, есть Express редакции SQL Server 2005 и версия "для веб-разработчика" (для разработки приложений ASP.NET на любом языке .NET).
    Посетите страничку Express center home page для скачивания этих продуктов.
  2. Доступна первая бета-версия Visual Studio 2005/.NET 2.0
    Microsoft выпустила первую бету среды разработки и платформы Visual Studio 2005/.NET 2.0, для подписчиков MSDN. Также, уже для свободного скачивания, доступны SDK и сам Framework.
    Microsoft также утверждает, что вскоре, за небольшую плату, будет доступна Visual Studio 2005 Beta 1, детали «оплаты» пока не известны.
  3. Проект Mono вышел в версии 1.0
    Проект Mono, результат усилий сообщества, возглавляемого Miguel de Icaza и Ximian (теперь являющейся частью Novell), достиг версии 1.0, по прежнему являясь open-source инициативой платформы .Net, совместимой со стандартом ECMA CLI. Доступны версии для ОС Red Hat, Windows и Mac OS/X.
    В состав Mono 1.0 входят несколько компонентов. Это компилятор языка C# (версии 1.0), совместимая с .Net виртуальная машина и два набора программных интерфейсов (API). Первый из них предназначен для использования преимуществ Linux, а второй обеспечивает совместимость с .Net Framework 1.1, обеспечивает поддержку ASP.NET, ADO.NET и других компонентов .Net. С помощью Mono могут создаваться как клиентские, так и серверные приложения и веб-сервисы. Кросс-платформенная библиотека Gtk# позволяет разрабатывать приложения для Windows, Linux и Mac OS X на базе одного и того же кода, написанного на любом из поддерживаемых Mono языков, среди которых VisualBasic, Python, JScript и Java.
    Больше вы можете узнать по ссылкам http://www.mono-project.com/about/index.html, скачать Mono можно здесь http://www.mono-project.com/downloads/index.html. Комментарии к выпуску Mono лежат здесь http://go-mono.com/archive/1.0/index.html, а лицензионный FAQ - http://www.mono-project.com/about/licensing.html.
  4. Вышел Quadrasis EASI Community Edition
    Quadrasis, Inc. (http://www.quadrasis.com) объяявила о выходе EASI Express Community Edition, набора сервисов и API, обеспечивающтх интегрированную безопасность вашего приложения. EASI CE бесплатна и поддерживает ОС Windows, Solaris и Linux. Поддерживаются также средства разработки для языков Java, C++ и платформы .NET.
  5. Вышел deloittes.NET ASP.NET Directory v1.0
    С помощью этого продукта можно легко создать портал по типу Yahoo!. Поставляется с кодом на VB.NET и файлами проектов VS.NET, администрированием каталогов через веб, поддерживает списки Что Нового и Горячие Новости, поиск с подсветкой, SQL Server с хранимыми процедурами и т.д.
  6. Вышел siteDirector .NET
    siteDirector .NET – это обработчик ошибок HTTP 404, тесно интегрированный с IIS для обработки ВСЕХ ошибок типа «ресурс не найден». Представляет собой небольшую, лёгкую в использовании утилиту, которая расположена на сайте – «must-have» для всех собственников веб-сайтов.
  7. DataGridColumns .NET Column Styles
    Количество работы, которую необходимо выполнить для достижения поставленного результата с помощью Windows Forms DataGrid, зачастую гораздо больше, чем вы могли ожидать. В основном, из-за того, что элемент управления Windows Forms DataGrid работает с колонками данных, а не с ячейками. Предлагаемая сборка поможет решить эту проблему.
  8. Вышла СУБД VistaDB 2.0 (Beta 3) для .NET
    Доступна для загрузки СУБД VistaDB 2.0 (Beta 3) для .NET. Beta 3 имеет существенные улучшения по сравнению с предыдущими выпусками. VistaDB – альтернатива №1 при выборе БД Access/JET, MSDE, xBase и иногда SQL Server, для построения от малых до средних приложений .NET, использующих БД.
  9. Соглашения по наименованию: вышла бесплатная бета devAdvantage 2.0 – обнаружение и устранение нарушений
    devAdvantage beta 2.0 теперь доступна для использования! devAdvantage выполняет анализ кода C#, автоматизируя процесс его проверки. В отличие от других продуктов, devAdvantage позволяет вам быстро корректировать нарушения соглашений наименований, благодаря использованию встроенной возможности рефакторинга кода. Последний релиз поставляется с большим набором настраиваемых соглашений для языка C#. Участники бета-программы получат 45% скидку на версию 2.0 после её выхода.
BUGs, FIXes and HOW TO's -
  1. A System.Security.SecurityException exception occurs when you try to impersonate a user from a secondary thread in an ASP.NET Web application
  2. BUG: The Visual C++ compiler generates an incorrect Microsoft intermediate language (MSIL) data type for a managed pointer to an IntPtr variable
  3. How To Use Windows XP Visual Styles with .NET Windows Forms
  4. How To Insert NULL Data with OLE DB SDK Interfaces
  5. How To Logical Values Must Be Sent to SQL Server as 1 or 0
  6. How To Open Documents Using the Internet Publishing Provider

{К содержанию}

Статья выпуска

Используем сетку свойств в C# 

ЯЗЫК: ASP.Net
Автор статьи: Mike Gold http://www.c-sharpcorner.com/


Знакомы ли вы с тем окном в Visual Studio .NET, с помощью которого происходит редактирование свойств всех ваших форм? Вы помните, то самое, которое вы хотели бы добавить к своим программам, поскольку оно имеет такой приятный интерфейс? Да-да, то самое Окно Свойств (Property Window)! Представляете? Вы можете добавить его к форме во время ее дизайна и использовать ее для предоставления пользователем возможности редактирования свойств класса, поскольку Microsoft уже разработала такую функциональность, которая просто не отображается на панели инструментов. Элемент управления называется Сетка Свойств (Property Grid) и вы имеете к нему полный доступ. Просто щелкните правой кнопкой мыши на панели инструментов и выберите Add/Remove Items...

Тем самым вы вызовете диалоговое окно Customize Toolbox, которое позволит вам выбрать компоненты .NET или COM компоненты. Прокрутите вниз до PropertyGrid, отметьте его и нажмите OK. Опа! Теперь у вас есть очень мощный компонент редактирования, в котором вы можете дать возможность пользователям изменять свойства ваших классов посредством удобного интерфейса.

Подготовка класса для работы с Property Grid

С Сеткой Свойств очень просто работать. Единственным сложным моментом является этап подготовки вашего класса для корректного отображения в ней. Первым шагом является создание публичных свойств для полей, которые вы хотите отобразить. Все свойства должны иметь методы get и set. (Если у вас не будет метода get, свойство не отобразится в PropertyGrid). Как только вы сделаете необходимый минимум по созданию свойств, объект вашего класса станет доступен для отображения в Сетке Свойств. Однако, ваша Сетка Свойств не будет разбивать поля на разделы с описаниями, категориями и т.п., так, как это делает Visual Studio.NET. Для того, чтобы сделать вашу Сетку Свойств изящной, вам необходимо добавить специальные атрибуты к каждому из ваших свойств. Эти атрибуты содержатся в пространстве имен System.ComponentModel и показаны в таблице ниже:

Атрибут Описание
CategoryAttribute Этот атрибут помещает ваши свойства в соответствующую категорию в узле сетки свойств.
DescriptionAttribute Этот атрибут помещает описание вашего свойства внизу сетки свойств.
BrowsableAttribute Этот атрибут используется для определения показывать или скрывать свойства от Сетки Свойств.
ReadOnlyAttribute Данный атрибут позволяет сделать ваше свойство свойством только для чтения.
DefaultValueAttribute Определяет значение по умолчанию свойства, отображаемое в Сетке Свойств
DefaultPropertyAttribute Если этот атрибут размещается над свойством, то это свойство получает фокус при первом отображении Сетки Свойств.

Таблица 1 – Атрибуты, необходимые для подготовки класса к отображению в Сетке Свойств

Пользовательский класс

Теперь мы готовы создать собственный класс и сделать его способным отобразить себя в Сетке Свойств. Для того, чтобы использовать атрибуты, перечисленные в таблице 1, мы должны указать пространство имен System.ComponentModel:
using System.ComponentModel;
Затем мы просто создаем собственный класс с приватными полями и публичными свойствами для доступа к этим полям. Атрибуты размещаются над этими свойствами для того, чтобы приготовить каждое свойство для отображения в Сетке Свойств.

Листинг 1 – Пользовательский класс, готовый для отображения в PropertyGrid

/// <summary>
/// Пользовательский класс для отображения в Сетке Свойств
/// </summary>
///

[DefaultPropertyAttribute("Name")]
public class Customer
{
private string _name;
private int _age;
private DateTime _dateOfBirth;
private string _SSN;
private string _address;
private string _email;
private bool _frequentBuyer;

// Свойство Name с атрибутом категории и
// атрибутом описания

[CategoryAttribute("ID Settings"),
DescriptionAttribute("Name of the customer")]
public string Name
{
get {return _name;}
set {_name = value;}
}

[CategoryAttribute("ID Settings"),
DescriptionAttribute("Social Security Number
of the customer")]
public string SSN
{
get { return _SSN;}
set {_SSN = value;}
}

[CategoryAttribute("ID Settings"),
DescriptionAttribute("Address of the customer")]
public string Address
{
get {return _address;}
set {_address = value;}
}

[CategoryAttribute("ID Settings"),
DescriptionAttribute("Date of Birth of the
Customer (optional)")]
public DateTime DateOfBirth
{
get { return _dateOfBirth;}

set
{_dateOfBirth = value; }
}

[CategoryAttribute("ID Settings"),
DescriptionAttribute("Age of the customer")]
public int Age
{
get {return _age;}

set
{_age = value;}
}

[CategoryAttribute("Marketting Settings"),
DescriptionAttribute("If the customer has bought
more than 10 times, this is set to true")]
public bool FrequentBuyer
{
get {return _frequentBuyer;}
set {_frequentBuyer = value;}
}

[CategoryAttribute("Marketting Settings"),
DescriptionAttribute("Most current e-mail of the customer")]
public string Email
{
get {return _email;}
set {_email = value;}
}

public Customer() { }

}

Указание объекта для PropertyGrid

Все, что осталось сделать для запуска Сетки Свойств – указать объект нашего пользовательского класса. Сетка Свойств автоматически, через отображение, определит все поля объекта и выведет их на экране. Еще одним приятным свойством этой сетки является то, что она создает специальные элементы управления для редактирования значений, базируясь на типе этих значений. Например, свойства Date of Birth (типа DateTime) нашего объекта позволит вам редактировать значение даты с помощью элементов управления календарь. Логические значения могут редактироваться с помощью комбобокса, отображая True или False (спасая вас от излишнего набора этих значений на клавиатуре).

В Листинге 2 мы создали новый объект и заполнили его свойства значениями. Мы использовали свойство SelectObject Сетки Свойств и сопоставили наш объект с этим свойством. После указания объекта сетке, сетка отобразит все публичные свойства, которые мы определили в нашем классе Customer.

Листинг 2 – сопоставление объекта сетке свойств

private void Form1_Load(object sender, System.EventArgs e)
{
// Создает объект для отображения
Customer bill = new Customer();

// Установка значений для свойств
bill.Age = 50;
bill.Address = " 114 Maple Drive ";
bill.DateOfBirth = Convert.ToDateTime(" 9/14/78");
bill.SSN = "123-345-3566";
bill.Email = bill@aol.com;
bill.Name = "Bill Smith";

// Установка сетки в объект для отображения
propertyGrid1.SelectedObject = bill;
}

Просмотр результатов

Если мы посмотрим на результат наших усилий, то увидим, что наши свойства разбиты на две категории ID Settings и Market Settings, которые отображаются как заголовки двух узлов дерева. Описание свойства FrequentBuyer показано внизу Сетки Свойств, таким, каким мы указали его в DescriptionAttribute этого свойства.

Вывод

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

{К содержанию}

Время кода

Проверка дат с использованием классов .NET пространства имён Globalization

ЯЗЫК: C#
АВТОР: Tom Archer,
http://www.developer.com/
ПЕРЕВОД: Чужа В.Ф ака hDrummer

Вступление

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

Такую проверку, например, можно осуществлять путём проверки каждой пары цифр, представляющих соответственно день, месяц и год:

static bool ManuallyValidate(String date)
{
// проверяем месяц в формате mmddyy или mmddyyyy
if (Convert.ToInt32(date.Substring(0, 2)) < = 12
&& Convert.ToInt32(date.Substring(0, 2)) > = 1)
// продолжаем проверку
...
return true;
else
return false;
}

Однако ясно, что такой подход работает только для одного формата даты — если только вы не добавите в него параметр формата и кучу кода для поддержки каждого формата дат. Более удачным подходом будет использование типов, доступных в пространстве имён .NET Globalization. Вот пример использования типов DateTimeFormatInfo и DateTime, служащий для проверки ваших дат тремя строками кода:

static bool ValidateDate(String date, String format)
{
try
{
System.Globalization.DateTimeFormatInfo dtfi = new System.Globalization.DateTimeFormatInfo();
dtfi.ShortDatePattern = format;
DateTime dt = DateTime.ParseExact(date, "d", dtfi);
}
catch(Exception)
{
return false;
}
return true; }

Как мы видим, метод ValidateDate принимает параметр типа String, представляющий дату для проверки и ещё один параметр типа String, представляющий формат этой даты - yymm или MMdd. Метод можно вызвать так:

bool success;
success = ValidateDate("3403", "MMmm");// false, т.к. 34 месяца нет
success = ValidateDate("3403", "yymm");// true
success = ValidateDate("1212", "MMdd");// true

Конечно, можно дальше развить эту идею, но эта статья призвана служить всего лишь примером того, что может быть сделано с помощью пространства имён Globalization и как легко мы можем его использовать. Список поддерживаемых шаблонов можно посмотреть в помощи по типу DateTimeFormatInfo, а также в статье ShortDatePattern vs. LongDatePattern из встроенной помощи.

Скачайте код

Здесь можно скачать код для этого примера.


{К содержанию}

Форумы .Net - вопросы оставшиеся без ответа

Как сохранить данные из ADO Recordset, что бы распечатать?
добавление удаление в DataGrid
заставить XMLSPY печатать русские буквы в редакторе
Подключение компилятора к EditPlus
Ошибка обращении к файлу Access из ASP.NET C#
Использование библиотеки dll в asp страницах
Как реализовать клик на заголовке ListView
Деление на 0
Размер исполняемого файла

На этом восемнадцатый выпуск .Net Собеседника закончен.
До следующего номера.



Чужа Виталий Ф. aka hDrummer,
hdrummer@sql.ru - жду ваши предложения, вопросы и замечания.


Рассылки Subscribe.Ru
.Net Собеседник - Новости мира Net, C#, ASP.Net

http://subscribe.ru/
E-mail: ask@subscribe.ru
Адрес подписки
Отписаться

В избранное