2013-04-12 6 views
1

Я пытаюсь изменить monthcalendar, но перед добавлением пользовательского элемента управления в форму VS замерзает. проблема в бесконечном цикле, но я не могу найти ошибку. Помогите, пожалуйстаUserControl for MonthCalendar

private void SetDayBoxSize() 
{ 
    int bottom = this.Height; 

    while (HitTest(1, dayTop).HitArea != HitArea.Date && 
     HitTest(1, dayTop).HitArea != HitArea.PrevMonthDate) dayTop++; 

    while (HitTest(1, bottom).HitArea != HitArea.Date && 
    HitTest(1, bottom).HitArea != HitArea.NextMonthDate) bottom--; 

    dayBox = new Rectangle(); 
    dayBox.Size = new Size(this.Width/7, (bottom - dayTop)/6); 
} 
+0

Мы собираемся должны увидеть код Трассировка, так как это, скорее всего, что-то где 'dayTop' и' bottom' не рассчитываются правильно, чтобы закончить 'while'. Возможно, потому, что один идет вверх, другой падает. – krillgar

+0

@krillgar это [стандартный метод] (http://msdn.microsoft.com/ru-ru/library/aa335429 (v = vs.71) .aspx) – duprass

+0

Думаю, вам стоит посмотреть дневные и нижние значения, чтобы увидеть что происходит. А настройка размера с использованием цикла while кажется странным. – aliassce

ответ

0

Вы можете использовать код, приведенный ниже, чтобы решить проблему:

private void SetDayBoxSize() 
{ 
    int bottom = this.Height; 

    while (HitTest(25, dayTop).HitArea != HitArea.Date && 
     HitTest(25, dayTop).HitArea != HitArea.PrevMonthDate) dayTop++; 

    while (HitTest(25, bottom).HitArea != HitArea.Date && 
    HitTest(25, bottom).HitArea != HitArea.NextMonthDate) bottom--; 

    dayBox = new Rectangle(); 
    dayBox.Size = new Size(this.Width/7, (bottom - dayTop)/6); 
} 
Смежные вопросы