Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Undo\Redo помогите разобраться 
:(
    Опции темы
DenWPF
Дата 29.4.2011, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

Репутация: нет
Всего: 1



dejavu.codeplex.com - вот как я понимаю класс для автоматического использования Undo\Redo.

Пытался сделать самое простое, добавление\удаление из коллекции данных.

Создал простую модель данных.

Код

public class MyData
    {
        private string m_name;
        private Point m_location;

        public MyData(string name, Point location)
        {
            Name = name;
            Location = location;
        }

        public string Name
        {
            get { return m_name; }
            set { m_name = value; }
        }

        public Point Location
        {
            get { return m_location; }
            set { m_location = value; }
        }
    }


Создаю класс List

Код

    public class GraphicsList : UndoRedoList<MyData>
    {
        public static GraphicsList Load()
        {
            using (UndoRedoManager.Start("Init"))
            {
                GraphicsList cities = new GraphicsList();
                cities.Add(new MyData("R " + Form1.rand.Next(10, 100000).ToString(), new Point(Form1.rand.Next(10, 100), Form1.rand.Next(10, 100))));

                UndoRedoManager.ClearHistory();
                return cities;
            }
        }
        public static void Save()
        {
            throw new NotImplementedException();
        }
    }


в главном классе создаю поле\свойство

Код

private GraphicsList m_graphicsList = new GraphicsList();
public GraphicsList GraphicsList
        {
            get { return m_graphicsList; }
            set { m_graphicsList = value; }
        }


и два обработчика, нажатие на R (добавление нового элемента в коллекцию) и рисование объектов из коллекции.

Код

protected override void OnKeyDown(KeyEventArgs e)
        {
            if(e.KeyCode == Keys.R)
            {
                GraphicsList.Add(new MyData("R " + GraphicsList.Count.ToString(), new Point(rand.Next(10,100), rand.Next(10,100))));
            }
            this.Invalidate();
            base.OnKeyDown(e);
        }
        protected override void OnPaint(PaintEventArgs e)
        {
            Graphics g = e.Graphics;

            foreach(var elem in GraphicsList)
            {
                g.DrawString(elem.Name, SystemFonts.CaptionFont, Brushes.Black, elem.Location);
            }
            base.OnPaint(e);
        }


При нажатии на R вылетает ошибка NullReferenceException (Ссылка на объект не указывает на экземпляр объекта.)
Хотя я не смог найти элемент в котором задано null.

PM MAIL   Вверх
Fortnox
Дата 29.4.2011, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 31.10.2008
Где: Ростов-на-Дону

Репутация: 14
Всего: 22



Смотрите стек вызовов, из вашего сообщения не очень то понятно, где и что. Да и удивляет, зачем использовать в классе свойства, а не его, класса, переменные.
PM MAIL   Вверх
DenWPF
Дата 29.4.2011, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

Репутация: нет
Всего: 1



Цитата

зачем использовать в классе свойства, а не его, класса, переменные.


В дальнейшем нужно будет использовать свойства, для того что бы уведомлять что то о изменении...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0565 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.