Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Помогите определиться как лучше реализовать


Автор: VolgaevLG 18.4.2013, 00:28
Помогите, пожайлуста.
Тщетно пытаюсь разобраться сам, но не знаю с чего начать.
Вообщем у меня проект - календарик:

Код

class Day
{
     Panel dayPanel;

     public Day(Panel parentpanel, Size size, Point loc)
     {
          dayPanel = new Panel();
          dayPanel.Location = loc;
          dayPanel.Size = size;
          parentpanel.controls.add(dayPanel);
     }
}

class Calendar
{
     Day[] days;

     public Calendar(Panel parentpanel)
          {
          days = new Days[35];
          for (int x = 0; x < 5; x++)
               {
               for (int y = 0; y < 7; y++)
                    {
                    Days[y + x * 5] = new Day(parentpanel, %расчитываю размер%, %расчитываю положение%);
                    }
               }
          }
}




Грубо говоря есть Panel на форме, ссылка на которую передается в класс Calendar, который плиткой выкладывает на этой панели экземпляры класса Day (в основании которого тоже Panel).
Вопроса у меня два:
Первый и основной. Как сделать так, что бы при нажатии кнопкой мыши на dayPanel вызывалась функция из класса Calendar. Например при обработке события MouseDown класс Calendar выделял бы нажатый "день" другим цветом. Пробовал через делегат, но по моему как-то нагорожено получилось.
Код

class Day
{
delegate void OneClick(int x);
OneClick _oneclick
###

     public Day(Panel parentpanel, Size size, Point loc, OneClick oneclick)
     {
          ###
          panelDay.OnMouseDown += MouseDown;
          _oneclick = oneclick;
          ###
     }

     public void MouseDown(object sender,  ###)
     {
          _oneclick(номер текущего элемента);
     }
}

Второй (если кому не лень ответьте). Меня терзают смутные сомнения что я что-то делаю не так))) Читаю про паттерны, UML, но не могу "скомпоновать" все в одно целое. Как бы Вы реализовали данное решение (что лучше сделать все на формах, панелях, или может быть лучше нарисовать все)

Автор: Экскалупатор 18.4.2013, 11:10
при формировании каждого "дня" твой класс, должен подписаться на событие "клик" по этому созданному элементу, ну и в обработчике события вызывать уже все что хочется

Автор: VolgaevLG 18.4.2013, 14:10
Спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)