C#TableLayoutPanel替换控件?

时间:2011-05-29 22:28:19

标签: c#-4.0 controls replace tablelayoutpanel

我想知道是否可以在运行时将TableLayoutPanel中的一个控件替换为另一个控件。我有一个组合框和一个按钮,它们在运行时动态添加到TableLayoutPanel,当用户选择组合框中的项目并点击按钮时,我想用一个包含文本的标签替换组合框。选中的组合框项目。

基本上,如果我可以简单地删除控件并在其索引处插入另一个,那对我有用。但是我没有在TableLayoutPanel的Controls集合上看到像“splice”或“insert”这样的选项,我想知道是否有一种简单的方法可以在特定索引处插入控件。提前谢谢。

2 个答案:

答案 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);
        }
    }