Как получить доступ к значениям элемента ToolStrip, который был добавлен динамически

Поскольку только некоторые стандартные элементы (textBox и т. Д.) Могут быть добавлены к элементу управления ToolStrip во время разработки в приложении Winform, я динамически добавил элемент управления DateTimePicker следующим образом, но я не уверен, как получить доступ к значению datetime выбранного дата в контроле

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 описано, как динамически добавлять элементы в ToolStrip, но не более того.

1 ответ

Решение

Вы можете справиться 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 Практическое руководство. Обертывание элемента управления Windows Forms с помощью ToolStripControlHost показывает, как создать настраиваемый элемент управления для размещения в ToolStrip, Вы можете просто использовать пример, чтобы создать свой собственный ToolStripDateTimePicker контроль.

Другие вопросы по тегам