3

実行時に TableLayoutPanel 内の 1 つのコントロールを別のコントロールに置き換えることが可能かどうか疑問に思っていました。実行時に TableLayoutPanel に動的に追加されるコンボ ボックスとボタンがあり、ユーザーがコンボ ボックス内の項目を選択してボタンを押すと、コンボ ボックスをテキストを含むラベルに置き換えたいと思います。選択されたコンボ ボックス項目。

基本的に、単にコントロールを削除して、そのインデックスに別のコントロールを挿入できれば、それでうまくいきます。ただし、TableLayoutPanel の Controls コレクションに「スプライス」や「挿入」などのオプションが表示されず、特定のインデックスにコントロールを挿入する簡単な方法があるかどうか疑問に思っていました。前もって感謝します。

4

2 に答える 2

1

これを修正するには、交換したい 2 つのコントロールをパネルに入力し、それを 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 に答える