У меня была такая же проблема с привязкой к динамически создаваемому ToolStripTextBox. Мое решение немного отличается от тех, которые уже опубликованы здесь, и я думаю, что немного проще.
Мне нужен был класс для размещения динамически создаваемых всплывающих окон на основе ContextMenuStrip. Я включил соответствующие части ниже.
Как показывает сложность, с этим связаны две проблемы. Во-первых, вы должны вручную связать контекст привязки с всплывающим объектом. В моем классе я передаю объект BindingContext из формы хоста в конструктор и присваиваю его всплывающему окну.
Во-вторых, элемент управления TextBox, связанный с ToolStripTextBox, не создается одновременно с созданием ToolStripTextBox (это также относится к динамически создаваемым ToolStripDropdowns). Вместо выполнения предложенной операции Show () / Hide () для принудительного создания элемента управления TextBox я вызываю метод CreateControl () элемента управления TextBox, чтобы принудительно создать его. Мне кажется, что делать это немного чище.
public class DevicePopup
{
ContextMenuStrip m_popup;
public DevicePopup(BindingContext bindingContext)
{
m_popup = new ContextMenuStrip();
m_popup.BindingContext = bindingContext;
. . .
}
public ToolStripTextBox AddTextBox(object dataSource, string dataProperty)
{
ToolStripTextBox textBox = new ToolStripTextBox();
textBox.Control.CreateControl();
textBox.TextBox.DataBindings.Add("Text", dataSource, dataProperty);
. . .
return textBox;
}
}