您可以通过以下方式处理ValueChanged
事件DateTimePicker
:
private void Form1_Load(object sender, EventArgs e)
{
var item = new ToolStripControlHost(new DateTimePicker());
((DateTimePicker)item.Control).ValueChanged += ToolStripDatePicker1_ValueChanged;
item.Name = "ToolStripDatePicker1";
toolStrip1.Items.Add(item);
}
private void ToolStripDatePicker1_ValueChanged(object sender, EventArgs e)
{
var datePicker = (DateTimePicker)sender;
MessageBox.Show(datePicker.Value.ToString());
}
作为另一种选择,您可以通过DateTimePicker
这种方式在另一个按钮单击事件处理程序中找到控件:
private void toolStripButton1_Click(object sender, EventArgs e)
{
var item = ((ToolStripControlHost)this.toolStrip1.Items["ToolStripDatePicker1"]);
var datePicker = (DateTimePicker)item.Control;
MessageBox.Show(datePicker.Value.ToString());
}
注意:更好的解决方案是从ToolStripControlHost
. 这样您就可以公开您需要的属性和事件。例如,您可以公开嵌入式控件的Value
属性和ValueChanged
事件。DateTimePicker
MSDN 示例How to: Wrap a Windows Forms Control with ToolStripControlHost向您展示了如何创建自定义控件以托管在ToolStrip
. 您可以简单地使用该示例来创建您的自定义控件ToolStripDateTimePicker
。