开发者

C# TableLayoutPanel replace control?

I was wondering if it was possible to replace one c开发者_如何学Control in a TableLayoutPanel with another at runtime. I have a combo box and a button which are dynamically added to the TableLayoutPanel at runtime, and when the user selects an item in the combo box and hits the button, I'd like to replace the combobox with a label containing the text of the selected combo box item.

Basically, if I could simply remove the control and insert another at it's index, that would work for me. However I don't see an option like "splice" or "insert" on the Controls collection of the TableLayoutPanel, and I was wondering if there was a simple way to insert a control at a specific index. Thanks in advance.


Fixed this by populating a panel with the two controls I wanted to swap and putting that into the TableLayoutPanel. Then I set their visibility according to which I wanted to see at what time.


This is what I've been able to come up with for what I needed. It gets the position of the ComboBox and makes a new label using the selected value.

    // 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);
        }
    }
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜