Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > .NET > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 02.06.2012, 12:39   #1
DENIS_POLOTSK
Пользователь
 
Регистрация: 28.05.2012
Сообщений: 29
По умолчанию Работа с MonthCalendar

Здравствуйте, как получить индекс выбранного пользователям дня в неделе? Например, пользователь нажимает на 20 января в MonthCalendar и в какую то переменную записывается индекс дня недели (к примеру понедельника int DayOfWeekIndex=...).
DENIS_POLOTSK вне форума   Ответить с цитированием
Старый 02.06.2012, 12:45   #2
DENIS_POLOTSK
Пользователь
 
Регистрация: 28.05.2012
Сообщений: 29
По умолчанию

Использую код в методе
Код:
DateTime dt = monthCalendar2.SelectionStart;
if (dt.DayOfWeek == DayOfWeek.Sunday) return 7;
, но хотелось бы как нибудь получить индекс по другому.

Последний раз редактировалось DENIS_POLOTSK; 02.06.2012 в 13:19.
DENIS_POLOTSK вне форума   Ответить с цитированием
Старый 02.06.2012, 13:21   #3
DENIS_POLOTSK
Пользователь
 
Регистрация: 28.05.2012
Сообщений: 29
По умолчанию

Использую такие методы:
Код:
//получаю число месяца
        public int CurData
        {
            get
            {
                DateTime dt = monthCalendar2.SelectionStart;
                return dt.Day;// +"." + dt.Month + "." + dt.Year;
            }
        }
Код:
public string NameDayOfWeek(int DayIndex)
        {
            //DateTime dt = monthCalendar2.SelectionStart;
            switch(DayIndex)
            {
                case 7: return "Воскресенье, ";
                case 1: return "Понедельник, ";
                case 8: return "Понедельник, ";
                case 2: return "Вторник, ";
                case 9: return "Вторник, ";
                case 3: return "Среда, ";
                case 10: return "Среда, ";
                case 4: return "Четверг, ";
                case 11: return "Четверг, ";
                case 5: return "Пятница, ";
                case 12: return "Пятница, ";
                case 6: return "Суббота, ";
                case 13: return "Суббота, ";
                default: return "";
            }
        }
Код:
public int IndexDayOfWeek
        {
            get
            {
                DateTime dt = monthCalendar2.SelectionStart;
                if (dt.DayOfWeek == DayOfWeek.Monday) return 1;
                if (dt.DayOfWeek == DayOfWeek.Tuesday) return 2;
                if (dt.DayOfWeek == DayOfWeek.Wednesday) return 3;
                if (dt.DayOfWeek == DayOfWeek.Thursday) return 4;
                if (dt.DayOfWeek == DayOfWeek.Friday) return 5;
                if (dt.DayOfWeek == DayOfWeek.Saturday) return 6;
                if (dt.DayOfWeek == DayOfWeek.Sunday) return 7;
                else return -1;
            }
        }
Код:
public void DrawDayOfWeek()
        {
            //создание ячеек с данными
            dataGridView1.Rows.Clear();
            int datta=CurData;
            int IndexDay = IndexDayOfWeek;
            DateTime dt = monthCalendar2.SelectionStart;
            AddRowToTable(NameDayOfWeek(IndexDay)+Convert.ToString(datta));
            AddRowToTable(NameDayOfWeek(IndexDay+1) + Convert.ToString(datta + 1));
            AddRowToTable(NameDayOfWeek(IndexDay+2) + Convert.ToString(datta + 2));
            AddRowToTable(NameDayOfWeek(IndexDay+3) + Convert.ToString(datta + 3));
            AddRowToTable(NameDayOfWeek(IndexDay+4) + Convert.ToString(datta + 4));
            AddRowToTable(NameDayOfWeek(IndexDay+5) + Convert.ToString(datta + 5));
            AddRowToTable(NameDayOfWeek(IndexDay+6) + Convert.ToString(datta + 6));
        }
как сделать проще?

Последний раз редактировалось DENIS_POLOTSK; 02.06.2012 в 13:24.
DENIS_POLOTSK вне форума   Ответить с цитированием
Старый 02.06.2012, 13:29   #4
DENIS_POLOTSK
Пользователь
 
Регистрация: 28.05.2012
Сообщений: 29
По умолчанию

Так же в процедуре DrawDayOfWeek при записи в DataGredView числа месяца, считывается выбранная дата и прибавляется 1, но если число 30, то выдаёт 30, 31, 32, 33, 34, 35....Подскажите как избавиться от этого?
DENIS_POLOTSK вне форума   Ответить с цитированием
Старый 02.06.2012, 14:27   #5
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 812
По умолчанию

Код:
 var dt = monthCalendar1.SelectionStart;
                return dt.ToString("dddd", new CultureInfo("ru-Ru"));
Так ты получишь название дня недели без всяких switch. И вообще, посмотри метод ToString у DateTime, все уже сделано до нас.
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума   Ответить с цитированием
Ответ
Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
monthCalendar DeptHunter C# (си шарп) 2 23.03.2012 04:26
monthcalendar zafiglon Общие вопросы C/C++ 0 06.04.2010 15:06
monthcalendar hunter03 Компоненты Delphi 6 05.11.2009 19:11
MonthCalendar + Memo _if_ Компоненты Delphi 6 31.12.2008 13:26