Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Win Forms example  (Прочитано 16612 раз)
0 Пользователей и 1 Гость смотрят эту тему.
.
Молодой специалист

ru
Offline Offline
Пол: Мужской

« : 22-03-2006 15:54 » 

Есть две задачи, которые мне надо написать на .NET:
  • водопад (написанный на MFC)
  • Реализовать чтение/запись в очень простую, но свою базу данных

Зная, насколько простая Java, что для нее полно документации и .NET был по-сути слизан с нее, я удивился, что до сих пор не могу найти толковой документации.
Как рисовать в форме для первой задачи наткнулся случайно на http://www.gotdotnet.com/community/usersamples/details.aspx?sampleguid=d8ed903c-4efd-483d-92f2-c07e5d3f68ed  но тем не менее, я так и не нашел толковой доки.
Посоветуйте что-нибудь, а то подавляющее число сообщений на тему ASP .NET, тому что C# - круче яиц на 5 минут, и какой у него синтаксис языка

Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #1 : 22-03-2006 17:47 » 

водопад  - ?
поподробнее
Записан

.
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 24-03-2006 13:44 » 

Водопад с грехом поплам сделал
Вторую бы сделать.....
Записан
.
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 24-03-2006 13:44 » 

водопад  - ?
поподробнее
Имитация падующей воды. Каждая капля - кружочек
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 24-03-2006 13:51 » 

Арсений(TjSoft), по второму вопросу расскажи подробнее!
"Своя база" - значит ты ее сам _написал_, или тебе ее надо самому _написать_? Какие сложности?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
.
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 24-03-2006 14:01 » 

Задача написать простое приложение, которое сериализует и десериализует ArrayList
Интерфейс, что не касается сохранения в файл и чтения из него вроде просто, благо нашел большое кол-во доков по System.Windows.Forms

ссылки, которыми с удовольствием поделюсь:

http://www.windowsforms.net/
http://www.gotdotnet.com/codegallery/directory.aspx
http://msdn.microsoft.com/vcsharp/downloads/samples/
http://search.msdn.microsoft.com/
http://www.icsharpcode.net/OpenSource/SD/
http://www.gotdotnet.com/Team/FxCop/
http://ncover.org/site/
Записан
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #6 : 24-03-2006 14:19 » 

Цитата
ну думаю с этой многие начинают Улыбаюсь Ага
Записан

Удачного всем кодинга! -=x[PooH]x=-
Mouse
Молодой специалист

ru
Offline Offline

« Ответ #7 : 24-03-2006 16:46 » 

Арсений(TjSoft), что за элементы в ArrayList'е?
Класс можно сделать сериализуемым, добавив к нему атрибут [Serializeable]

Код:
[Serializeable]
class SerializeableClass
{
}

Еще почитай про классы BinaryFormatter, SoapFormatter и XmlSerializer Улыбаюсь
« Последнее редактирование: 20-12-2007 14:54 от Алексей1153++ » Записан
.
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #8 : 25-03-2006 10:33 » 

Код:
class Data
{
  public String data1;
  public double data2;
}
Если я добавлю к классу [Serializeable], то ArrayList из этих классов сериализуется, я правильно понимаю?


Записан
Mouse
Молодой специалист

ru
Offline Offline

« Ответ #9 : 26-03-2006 20:34 » 

Правильно. Хотя для класса XmlSerializer совершенно параллельно, есть ли этот атрибут. А вот для различных подклассов класса Formatter это необходимо. Ниже привожу пример, использующий класс BinaryFormatter

Наш класс
Код:
    [Serializable]
    class Data
    {
        public String data1;
        public Double data2;

        public Data(String data1, Double data2)
        {
            this.data1 = data1;
            this.data2 = data2;
        }
    }

Собственно сериализация
Код:
            ArrayList list = new ArrayList();

            list.Add(new Data("1", 1));
            list.Add(new Data("2", 2));
            list.Add(new Data("3", 3));

            BinaryFormatter binaryFormatter = new BinaryFormatter();

            FileStream stream = new FileStream("c:\\ser.dat", FileMode.Create, FileAccess.Write);

            binaryFormatter.Serialize(stream, list);

            stream.Close();

            stream = new FileStream("c:\\ser.dat", FileMode.Open, FileAccess.Read);
            ArrayList list2 = new ArrayList();
            list2 = (ArrayList)binaryFormatter.Deserialize(stream);

            stream.Close();

В рельтате объект list2 будет содержать элементы объекта list Улыбаюсь

Кстати раз уж зашел разговор о сериализации, то пара слов о классе XmlSerializer. Он позволяет генерить xml на основе класса, и для этого не нужен атрибут [Serializeable]. Зато наш класс он не сериализует, ссылаясь на то что у него нет конструктора без параметров. Да, и класс обязательно должен быть public. Т.е. нам нужен класс примерно такой:

Код:
    public class Data
    {
        public String data1;
        public Double data2;

        public Data()
        {
            this.data1 = string.Empty;
            this.data2 = 0;
        }

        public Data(String data1, Double data2)
        {
            this.data1 = data1;
            this.data2 = data2;
        }
    }

На этом фокусы XmlSerializer не кончаются. Он наотрез отказывается сериализовать нетипизированные коллекции, такие как ArayList. Зато типизированные - на ура, например коллекцию типа List<Data> он сериализует. Работающий пример кода для типизированной коллекции:

Код:
            List<Data> list = new List<Data>();

            list.Add(new Data("1", 1));
            list.Add(new Data("2", 2));
            list.Add(new Data("3", 3));

            FileStream stream = new FileStream("c:\\ser.xml", FileMode.Create, FileAccess.Write);

            XmlSerializer serializer = new XmlSerializer(typeof(List<Data>));
            serializer.Serialize(stream, list);

            stream.Close();

Итак, сериализовать могут многие, но "не все йогурты одинаково полезны" Ага Тебе идеально использовать BinaryFormatter, а если хочется передавать данные через сеть, то можно и SoapFormatter. Лежат они в System.Runtime.Serialization.Formatters.Binary и System.Runtime.Serialization.Formatters.Soap соответственно

Удачи Улыбаюсь
Записан
.
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #10 : 28-03-2006 13:49 » 

Большое спасибо
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines