2014-08-03 3 views
0

Я пытаюсь создать настраиваемый элемент управления, который реагирует на разрешение экрана.Как перемещать элементы управления в TableLayoutPanel в другую ячейку и восстанавливать ее обратно на C#?

Моя идея довольно проста.

Для этого я должен иметь возможность перемещать элементы управления в ячейке TableLayoutPanel.

Итак, я пытаюсь эти коды ниже.

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace WindowsFormsApplication3 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void _btnMove_Click(object sender, EventArgs e) 
     { 
      tableLayoutPanel1.Height += 30; 
      tableLayoutPanel1.RowCount = 3; 
      tableLayoutPanel1.Controls.Add(flowLayoutPanel4, 0, 2); 
      tableLayoutPanel1.SetColumnSpan(flowLayoutPanel4, 2); 
     } 

     private void _btnRestore_Click(object sender, EventArgs e) 
     { 
      tableLayoutPanel1.Controls.Add(flowLayoutPanel4, 6, 0); 
     } 
    } 
} 

Кажется, что работа хорошая.

enter image description here

Это оригинальный образ TableLayoutPanel.

И когда я нажимаю на кнопку Move,

enter image description here

Да, TableLayoutPanel теперь имеет 3 строки и поиска и кнопки Excel находятся в 3-й строке.

Теперь я должен восстановить их на первом месте.

enter image description here

Здесь, как представляется, не будет работать нормально.

Я попытался отправить их в 6 столбцов, 0 позицию в строке.

Но это в другой ячейке.

Кто-нибудь знает, где его исправить?

ответ

0

Вам необходимо обратить вспять все, что вы сделали в методе _btnMove_Click. Длина столбца, по-прежнему равная 2, была причиной того, что она опустилась до второй строки.

private void _btnRestore_Click(object sender, EventArgs e) 
{ 
    tableLayoutPanel1.Height -= 30; 
    tableLayoutPanel1.RowCount = 2; 
    tableLayoutPanel1.SetColumnSpan(flowLayoutPanel1, 1); 
    tableLayoutPanel1.Controls.Add(flowLayoutPanel1, 6, 0); 
} 
+0

Thanks. Это было решено. –