猿问

在 TableLayoutPanel 中交换控件位置

为了清楚起见,我将进一步改进我的信息:


我有一个 TableLayoutView(我称之为 tlv),它有5 个固定列和x + 2行。tlv 的第一行包含每个单元格中用于标题目的的标签。我在 tlv 上动态添加更多行,因此它为什么具有可变数量的行(加上从未删除的初始标题行)。


作为另一个小问题,我还在 tlv 底部保留了一个空行条目,我必须保留它,因为我将它用于其他功能。


为了形象化我刚才所说的内容,这是一个 tlv 示例,由 4 个条目(编号)、标题行 (H's) 和占位符行 (P's) 组成。


HHHHH

11111

22222

33333

44444

PPPPP

我想从那个开始,也就是说,如果我想交换条目 2 和 3,输出将是:


HHHHH

11111

33333

22222

44444

PPPPP

我到目前为止的代码如下:


for (int j = 0; j < 5; j++)

{

    TableLayoutPanelCellPosition tablePosition1 = new 

    TableLayoutPanelCellPosition(j, rowIndex + 1);

    Control moveControl1 = queuedFiles.GetControlFromPosition(j, rowIndex);

    queuedFiles.SetCellPosition(moveControl1, tablePosition1);


    TableLayoutPanelCellPosition tablePosition2 = new 

    TableLayoutPanelCellPosition(j, rowIndex);

    Control moveControl2 = queuedFiles.GetControlFromPosition(j, rowIndex + 1);

    queuedFiles.SetCellPosition(moveControl2, tablePosition2);


    if (j.Equals(0))

    {

        moveControl1.Text = (rowIndex + 1).ToString();

        moveControl2.Text = (rowIndex).ToString();

    }

}

但是,此代码不起作用,对于上面的示例,它会生成:


HHHHH

11111

33222

22333

44444

PPPPP

我相信正在发生的是 tlv 在移动它们的过程中自动组织它的内容本身(也许是为了填补空白?)。


上面的rowIndex是目标行的索引,必须与其下面的行交换。我不需要担心检查是否只有 1 行或者它是否是最后一行,因为我已经这样做了。也忽略更改文本,我只需要一个关于如何实现预期结果的指针!


绝对感谢您提供的任何帮助:)


qq_花开花谢_0
浏览 391回答 1
1回答
随时随地看视频慕课网APP
我要回答