我想知道是否可以在运行时将TableLayoutPanel中的一个控件替换为另一个控件。我有一个组合框和一个按钮,它们在运行时动态添加到TableLayoutPanel,当用户选择组合框中的项目并点击按钮时,我想用一个包含文本的标签替换组合框。选中的组合框项目。
基本上,如果我可以简单地删除控件并在其索引处插入另一个,那对我有用。但是我没有在TableLayoutPanel的Controls集合上看到像“splice”或“insert”这样的选项,我想知道是否有一种简单的方法可以在特定索引处插入控件。提前谢谢。
答案 0 :(得分:1)
通过使用我想要交换的两个控件填充面板并将其放入TableLayoutPanel来解决此问题。然后根据我想在什么时间看到它来设置它们的可见性。
答案 1 :(得分:0)
这是我能够想出的所需要的东西。它获取ComboBox的位置,并使用所选值创建一个新标签。
// Replaces a drop down menu with a label of the same value
private void lockDropMenu(ComboBox dropControl)
{
TableLayoutPanelCellPosition pos = myTable.GetCellPosition(dropControl);
Label lblValue = new Label();
myTable.Controls.Remove(dropControl);
if (dropControl.SelectedItem != null)
{
lblValue.Text = dropControl.SelectedItem.ToString();
lblValue.Font = lblValue.Font = dropControl.Font;
// Just my preferred formatting
lblValue.AutoSize = true;
lblValue.Dock = System.Windows.Forms.DockStyle.Fill;
lblValue.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
myTable.Controls.Add(lblValue, pos.Column, pos.Row);
}
}