Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.66/47: Рейтинг темы: голосов - 47, средняя оценка - 4.66
0 / 0 / 0
Регистрация: 21.11.2010
Сообщений: 81
1

Как в календаре заставить нужные дни нужного месяца окраситься заданным цветом

17.01.2012, 20:47. Показов 9771. Ответов 6
Метки нет (Все метки)

Кинул на форму календарь (MonthCalendar). Как теперь заставить нужные дни нужного месяца окраситься заданным цветом? Подскажите, если кто знает.

Добавлено через 1 час 11 минут
Можно поставить вопрос и по другому. Как перебрать все даты указанных месяцев?
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.01.2012, 20:47
Ответы с готовыми решениями:

Как определить дни недели в календаре?
Сделал так чтобы даты шли вниз =) , но дни недели не выводит как сделать чтобы например в пятницу...

Вывод в календаре рабочих дней одним цветом, а нерабочих другим цветом.
В Access есть форма в которую вставлен элемент ActiveX Календарь и есть таблица, имеющая два поля...

Как сделать в календаре праздничные дни, чтобы информация отображалась о них в ListBox?
Как сделать в календаре праздничные дни чтобы информация отображалась о них в ListBox

Как извлечь число дней из выбранного месяца в календаре
Подскажите как мне извлечь число дней из выбранного месяца? Например на календаре выбран март, в...

6
2478 / 1922 / 346
Регистрация: 22.07.2011
Сообщений: 7,296
17.01.2012, 20:59 2
Есть такая штука как Microsoft Developer Network (msdn), посмотри там все свойства, может найдешь подходящее. Если нету то придется шаманить со своей реализацией.

Добавлено через 5 минут
http://msdn.microsoft.com/ru-r... range.aspx - можно выбрать даты в диапозоне
1
0 / 0 / 0
Регистрация: 21.11.2010
Сообщений: 81
17.01.2012, 21:21  [ТС] 3
sau,
Ok. Дапазон я получу. Например от 01.01.2012 до 30.01.2012 (т.е получу месяц - январь). Но как мне теперь перебрать все даты этого диапазона? Может foreach какой или еще как? А вот у полученной перебором дате я и буду менять цвет, если это потребуется.
0
2478 / 1922 / 346
Регистрация: 22.07.2011
Сообщений: 7,296
17.01.2012, 21:36 4
Ну так а выбранный диапазон разве не подсвечивается ?, еще есть вариант с жирными датами http://msdn.microsoft.com/ru-r... dates.aspx
В остальном если не предусмотрен функционал, то нужно свой контрол писать на базе этого., можно рендеринг переопределить и там уже рисовать и красить все что захочеться., или как вариант, посмотреть к какому css классу в HTML будут оноситься жирные даты или даты из диапозона, и тупо скриптиком (JQuery) установить background-color., или указать свой CssClass для них.
1
0 / 0 / 0
Регистрация: 21.11.2010
Сообщений: 81
17.01.2012, 21:43  [ТС] 5
sau,
Спасибо! Буду думать-пробовать.
0
0 / 0 / 0
Регистрация: 21.11.2010
Сообщений: 81
19.01.2012, 16:46  [ТС] 6
Блин! Ничего не получилось. Кто сталкивался с такой задачей.
Я хочу сделать так, что бы при вводе фамилии работника предприятия, работающего посменно, можно было бы узнать, является ли какой либо день выбранного месяца рабочим для него, или это выходной.
Для этого, все его рабочие дни календаря я хочу выделить одним цветом, а выходные - другим.
Все что я смог сделать - это выделить жирным (BoldedDates). Но это плохо видно. Хотелось бы выделить цветом.
Это не задачка для студента от преподавателя. Делаю для себя.
0
2478 / 1922 / 346
Регистрация: 22.07.2011
Сообщений: 7,296
19.01.2012, 20:03 7
черт, спутал с веб. календарем, сори )
(вот что значит прыгать из раздела в раздел)

Добавлено через 34 минуты
Судя по рефлектору, для окраски вызывается приватный метод SetControlColor , который в свою очередь вызывает api SendMessage с определенными аргументами.
Остается вариант с переопределением функции DefWndProc(ref Message m), в которой отслеживаем нужные параметры закраски и отправляем еще один SendMessage уже с аргументами закраски фона. Но вообще это изврат ).
http://www.k-press.ru/cs/2004/... ontrol.asp


C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[SecurityPermission(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.UnmanagedCode)]
protected override void WndProc(ref Message m)
{
    switch (m.Msg)
    {
        case 0x87:
            this.WmGetDlgCode(ref m);
            return;
 
        case 0x201:
            this.FocusInternal();
            if (base.ValidationCancelled)
            {
                break;
            }
            base.WndProc(ref m);
            return;
 
        case 0x204e: //this code hook
            this.WmReflectCommand(ref m);
            base.WndProc(ref m);
            return;
 
        default:
            base.WndProc(ref m);
            break;
    }
}
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
private void WmReflectCommand(ref Message m)
{
    if (m.HWnd == base.Handle)
    {
        NativeMethods.NMHDR lParam = (NativeMethods.NMHDR) m.GetLParam(typeof(NativeMethods.NMHDR));
        switch (lParam.code)
        {
            case -749:
                this.WmDateChanged(ref m);
                return;
 
            case -748:
                return;
 
            case -747: // this code hook
                this.WmDateBold(ref m);
                return;
 
            case -746:
                this.WmDateSelected(ref m);
                return;
        }
    }
}

C#
1
2
3
4
5
6
7
8
9
10
private void WmDateBold(ref Message m)
{
    NativeMethods.NMDAYSTATE lParam = (NativeMethods.NMDAYSTATE) m.GetLParam(typeof(NativeMethods.NMDAYSTATE));
    DateBoldEventArgs e = new DateBoldEventArgs(DateTimePicker.SysTimeToDateTime(lParam.stStart), lParam.cDayState);
    this.BoldDates(e);
    this.mdsBuffer = this.RequestBuffer(e.Size);
    Marshal.Copy(e.DaysToBold, 0, this.mdsBuffer, e.Size);
    lParam.prgDayState = this.mdsBuffer;
    Marshal.StructureToPtr(lParam, m.LParam, false);
}
2
19.01.2012, 20:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.01.2012, 20:03

Выделить в календаре дни отпуска, зная его продолжительность
Программа типа календарь для графического представления продолжительности, например, отпуска. Ввел...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru