You're going to have to build your own control to do this. But, it's not that hard.
As an example, here's a simple user control that does what you want. I added a textbox and a picturebox to a user control. Then, I set the picturebox image to an image of a calendar.
Then, here's the code using a MonthCalendar control:
public partial class IconDateTimePicker : UserControl
{
MonthCalendar myCal;
public IconDateTimePicker()
{
InitializeComponent();
myCal = new MonthCalendar();
myCal.Visible = false;
myCal.DateSelected += new DateRangeEventHandler(this.monthCalendar_DateSelected);
myCal.Leave += new EventHandler(this.monthCalendar_Leave);
}
private void pictureBox1_Click(object sender, EventArgs e)
{
myCal.Visible = !myCal.Visible;
myCal.Focus();
}
private void IconDateTimePicker_ParentChanged(object sender, EventArgs e)
{
this.Parent.Controls.Add(myCal);
myCal.Left = (this.Left + this.pictureBox1.Right) - myCal.Width;
myCal.Top = this.Bottom + 5;
}
private void monthCalendar_DateSelected(object sender, DateRangeEventArgs e)
{
this.textBox1.Text = ((MonthCalendar)sender).SelectionStart.ToShortDateString();
myCal.Visible = false;
}
private void monthCalendar_Leave(object sender, EventArgs e)
{
myCal.Visible = false;
}
}
This is very basic and you would want to add other things to it, such as minDate, maxDate, etc...
But you should get the idea of a simple way to do this.