【问题标题】:How to access values of a ToolStrip item that was added dynamically如何访问动态添加的 ToolStrip 项的值
【发布时间】:2017-05-06 18:00:39
【问题描述】:

由于在 Winform 应用程序的设计时只能将一些标准项目(文本框等)添加到 ToolStrip 控件,因此我已按如下方式动态添加了 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,但仅此而已。

【问题讨论】:

  • 使myDateTimePicker 成为表单的属性或字段,以便您始终可以访问它。可能有一种方法可以命名工具条项并找到它,但不会那么容易。
  • @Crowcoder 我在 Form 类中声明了public DateTimePicker myDateTimePicker { get; set; },但不确定如何在上面的示例中使用它。

标签: c# .net winforms toolstrip toolstripcontrolhost


【解决方案1】:

您可以这样处理DateTimePickerValueChanged 事件:

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 控件。

【讨论】:

  • 感谢您对我的帮助 - 它就像一个魅力。也感谢您的解释。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-26
  • 1970-01-01
  • 1970-01-01
  • 2015-07-22
相关资源
最近更新 更多