3

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

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

4

2 回答 2

1

通过使用我想要交换的两个控件填充面板并将其放入 TableLayoutPanel 来解决此问题。然后我根据我想在什么时间看到的设置它们的可见性。

于 2012-02-07T16:58:24.610 回答
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);
        }
    }
于 2014-12-16T00:05:39.717 回答