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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> MonthCalendar зацикливается, при переключении месяца 
:(
    Опции темы
Roo
  Дата 18.11.2005, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 17.10.2005

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



Нужно запретить пользователю выбирать дату раньше чем сегодняшняя. Использую событие DateChanged, к примеру:
Код

private void monthCalendar1_DateChanged(object sender, System.Windows.Forms.DateRangeEventArgs e)
{
    if(monthCalendar1.SelectionStart.CompareTo(DateTime.Today) < 0) {
        MessageBox.Show(......);
        monthCalendar1.SelectionStart = monthCalendar1.SelectionEnd = DateTime.Today;
    }
}

Теперь, если пользователь кликает на предыдущие месяцы, сначала выскакивает один MessageBox, а после его закрытия - происходит зацикливание: месяцы пролистываются назад сами собой и циклично срабатывает DateChanged... Кто знает, почему так происходит; и как быть вообще в данной ситуации?
PM MAIL   Вверх
mr.DUDA
Дата 19.11.2005, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 24
Всего: 232



Всё просто:
Код


bool _flag = false;

private void monthCalendar1_DateChanged(object sender, System.Windows.Forms.DateRangeEventArgs e)
{
    if(_flag) return;
    _flag = true;

     if(monthCalendar1.SelectionStart.CompareTo(DateTime.Today) < 0) 
     {
          MessageBox.Show(......);
          monthCalendar1.SelectionStart = monthCalendar1.SelectionEnd = DateTime.Today;
     }

   _flag = false;
}



--------------------
user posted image
PM MAIL WWW   Вверх
Roo
Дата 19.11.2005, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 17.10.2005

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



Да, это понятно. Но как-то всё-таки искусственно всё время к флажкам прибегать... Может я зануда, но всё равно мне непонятно, почему происходит зацикливание именно при переключении месяца... Но всё равно спасибо smile
PM MAIL   Вверх
Roo
Дата 19.11.2005, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 17.10.2005

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



Проверил только что с флажками - всё равно зацикливается... По-другому, но циклится. Календарь сам начинает перескакивать на месяц назад. Причём циклится даже без изменения SelectionStart/SelectionEnd. Или у меня уже какие-то глюки, или тут что-то не так....
PM MAIL   Вверх
mr.DUDA
Дата 19.11.2005, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 24
Всего: 232



Если сделать на флажках, то более чем 1 раз метод monthCalendar1_DateChanged не будет вызван, т.е. рекурсия исключается.


--------------------
user posted image
PM MAIL WWW   Вверх
Roo
Дата 20.11.2005, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 17.10.2005

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



Цитата
Если сделать на флажках, то более чем 1 раз метод monthCalendar1_DateChanged не будет вызван, т.е. рекурсия исключается.

Это понятно. Но почему тогда рекурсия происходит даже без изменения SelectionStart/SelectionEnd, и даже с флажками ?!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




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


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

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