I have a solution to my post, and here it is. public class TimePicker : ComboBox { bool m_fIsDropDown = false; string m_strTime = string.Empty; int m_nSelectedIndex = -1; public TimePicker() : base() { } private void LoadTimes() { if (this.Items.Count < 1) { DateTime t = new DateTime(2005, 10, 11, 0, 0, 0, 0); while (t < new DateTime(2005, 10, 12)) { this.Items.Add(t.ToShortTimeString()); t = t.AddMinutes(30); } } } protected override void OnCreateControl() { base.OnCreateControl(); LoadTimes(); } protected override void OnDropDown(EventArgs e) { base.OnDropDown(e); m_strTime = this.Text; DateTime dtmValue = DateTime.Now; try { dtmValue = Convert.ToDateTime(m_strTime); } catch { return; } for (int i = 0; i < this.Items.Count; i++) { DateTime dtmItem = Convert.ToDateTime(this.Items[i].ToString()); if (dtmValue >= dtmItem && dtmValue < dtmItem.AddMinutes(30)) { this.SelectedIndex = i; m_nSelectedIndex = i; break; } } m_fIsDropDown = true; } protected override void OnMouseDown(MouseEventArgs e) { if (m_fIsDropDown == true) { this.SelectedIndex = m_nSelectedIndex; this.Text = m_strTime; } else { base.OnMouseDown(e); } } protected override void OnMouseUp(MouseEventArgs e) { if (m_fIsDropDown == true) { this.SelectedIndex = m_nSelectedIndex; this.Text = m_strTime; m_fIsDropDown = false; } else { base.OnMouseUp(e); } } } --IAN