如何在顶部显示类似于DateTimePicker
下拉列表的MonthCalendar
?我有一个自定义控件(TextBox
和Button
),当单击时,它会动态显示MonthCalendar
。
我可以把它放在控制面板的前面,但不能放在面板的上面。
private void btn_Click(object sender, EventArgs e)
{
if (mc.Parent == null)
{
this.Parent.Controls.Add(mc);
mc.Location = new Point(this.Location.X, this.Location.Y + this.Height);
mc.BringToFront();
}
else
{
mc.Show();
}
}
1条答案
按热度按时间8zzbczxx1#
DateTimePicker
上的下拉日历是一个浮动窗口,ComboBox
上的下拉列表也是如此。MonthCalendar
只是一个常规控件,因此,就像其他任何控件一样,它不能显示在其父控件的边界之外。如果您希望它显示在窗体上,并且超出Panel
的边界,那么您需要使其父控件成为窗体。而不是Panel
。如果您希望它也显示在窗体边界之外,则需要创建一个新的无边框窗体,并将其作为控件的父控件。以下是一种方法,可用于将子控件从一个父控件移动到另一个父控件,而不更改其在屏幕上的绝对位置:
在您的情况下,您可能希望这样调用它:
之后,您可能需要在子控件上呼叫
BringToFront
,视您的迭置顺序而定。请注意,您也可以在设计工具中将
MonthCalendar
加入至表单,然后在属性 windows 中变更其Location
,以将其置于正确的位置。