如何访问动态添加的 ToolStrip 项的值
How to access values of a ToolStrip item that was added dynamically
因为只有一些标准项目(文本框等)可以动态添加到 ToolStrip control at design time in a Winform app, I've added a DateTimePicker 控件,如下所示,但我不确定如何访问控件中所选日期的日期时间值
var datePicker = new ToolStripControlHost(new DateTimePicker());
toolStrip1.Items.Add(datePicker);
我已经尝试了以下仍然像上面一样工作但无法访问添加的 dateTimePicker 的选定日期值:
DateTimePicker myDateTimePicker = new DateTimePicker();
var datePicker = new ToolStripControlHost(myDateTimePicker);
toolStrip1.Items.Add(datePicker);
此 MSDN tutorial 介绍了如何将项目动态添加到 ToolStrip,但仅此而已。
您可以这样处理 DateTimePicker
的 ValueChanged
事件:
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
。这样你就可以公开你需要的属性和事件。例如,您可以公开嵌入 DateTimePicker
控件的 Value
属性 和 ValueChanged
事件。
MSDN 示例 How to: Wrap a Windows Forms Control with ToolStripControlHost 向您展示了如何创建要在 ToolStrip
中托管的自定义控件。您可以简单地使用该示例来创建您的自定义 ToolStripDateTimePicker
控件。
因为只有一些标准项目(文本框等)可以动态添加到 ToolStrip control at design time in a Winform app, I've added a DateTimePicker 控件,如下所示,但我不确定如何访问控件中所选日期的日期时间值
var datePicker = new ToolStripControlHost(new DateTimePicker());
toolStrip1.Items.Add(datePicker);
我已经尝试了以下仍然像上面一样工作但无法访问添加的 dateTimePicker 的选定日期值:
DateTimePicker myDateTimePicker = new DateTimePicker();
var datePicker = new ToolStripControlHost(myDateTimePicker);
toolStrip1.Items.Add(datePicker);
此 MSDN tutorial 介绍了如何将项目动态添加到 ToolStrip,但仅此而已。
您可以这样处理 DateTimePicker
的 ValueChanged
事件:
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
。这样你就可以公开你需要的属性和事件。例如,您可以公开嵌入 DateTimePicker
控件的 Value
属性 和 ValueChanged
事件。
MSDN 示例 How to: Wrap a Windows Forms Control with ToolStripControlHost 向您展示了如何创建要在 ToolStrip
中托管的自定义控件。您可以简单地使用该示例来创建您的自定义 ToolStripDateTimePicker
控件。