Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can i show month selection calendar in my app

I am interested in showing list of 12 months like in similar way to datepicker's month selection control. But i don't like to show the date picker to show the dates of that month too... only month view is ok so that i can select month from the list.

my desired output: enter image description here

like image 795
KoolKabin Avatar asked Mar 11 '11 07:03

KoolKabin


People also ask

How do I get my iPhone Calendar to show events?

On the lock screen of your iPhone or iPad, swipe left to right until you see a list of widgets. Scroll to the bottom and tap Edit. Tap Done. You should see upcoming events from your Calendar in the Today view.


2 Answers

This is going to require a bit of pinvoke to send the messages to get the calendar to switch the view. Implement the DateTimePicker's DropDown event handler like this:

    private void dateTimePicker1_DropDown(object sender, EventArgs e) {
        IntPtr cal = SendMessage(dateTimePicker1.Handle, DTM_GETMONTHCAL, IntPtr.Zero, IntPtr.Zero);
        SendMessage(cal, MCM_SETCURRENTVIEW, IntPtr.Zero, (IntPtr)1);
    }

    // pinvoke:
    private const int DTM_GETMONTHCAL = 0x1000 + 8;
    private const int MCM_SETCURRENTVIEW = 0x1000 + 32;

    [System.Runtime.InteropServices.DllImport("user32.dll")]
    private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp);

The view switching is animated, it is going to be visible to the user. This won't work for Windows versions prior to Vista. Use an online translator if necessary to translate this C# code to VB.NET

like image 169
Hans Passant Avatar answered Sep 18 '22 20:09

Hans Passant


I'm not entirely sure if I understand what you're asking. If you want to show the month calendar without a picker control attached to it, you can use the MonthCalendar control.

It looks like this (note the absence of the textbox and drop-down arrow):

  MonthCalendar control


If you're wondering if there's a way to limit the content that is displayed on the control to only the months themselves, rather than the individuals days of the month, then no that's not possible. The control does not provide any built-in facility for this.

However, if you do want to use the picker control, you can limit the values it displays to only the name of the month. Do that by specifying a custom format string:

myDateTimePicker.Format = DateTimePickerFormat.Custom
myDateTimePicker.CustomFormat = "MMMM"

This results in something like the following (notice that the drop-down content is unchanged, but the information that is recorded in the picker control itself is limited to the name of the month):

  DateTimePicker with custom format specified

like image 34
Cody Gray Avatar answered Sep 20 '22 20:09

Cody Gray