您可以處理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
控件。
使'myDateTimePicker'成爲窗體的屬性或字段,以便您始終可以訪問它。可能有一種方法可以命名工具條項目並找到它,但它不會那麼容易。 – Crowcoder
@Crowcoder我聲明'public DateTimePicker myDateTimePicker {get;組; }在Form類中,但不知道如何在上面的例子中使用它。 – nam