Мне нужно выполнить действие, когда элемент управления добавляется в TableLayoutPanel в Windows Forms. Я обрабатываю событие ParentChanged элемента управления, чтобы узнать, добавлен ли элемент управления к родителю (здесь TableLayoutPanel), но полученный индекс равен -1.
Панель макета таблицы т;
private void button1_Click(object sender, EventArgs e)
{
// this.Text = tableLayoutPanel1.Height.ToString();
t = new TableLayoutPanel();
t.Dock = DockStyle.Fill;
//t.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
t.AutoSize = true;
//t.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
t.RowStyles.Add(new RowStyle(SizeType.AutoSize));
t.RowStyles.Add(new RowStyle(SizeType.AutoSize));
t.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50));
t.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50));
panel1.Controls.Add(t);
t.CellBorderStyle = TableLayoutPanelCellBorderStyle.Single;
Label lbl = new Label();
lbl.ParentChanged += new EventHandler(lbl_ParentChanged);
lbl.Margin = new System.Windows.Forms.Padding(20, 150, 20, 20);
lbl.Text = "Hello";
t.Controls.Add(lbl, 0, 0);
}
void lbl_ParentChanged(object sender, EventArgs e)
{
Label lbl = (Label)sender;
int row = t.GetRow(lbl);//here I get row = -1 ??????
}
Мне нужен номер строки, к которой добавляется элемент управления. Элемент управления должен действовать независимо от того, когда он добавлен в TableLayoutPanel. Как его получить ?
void t_ControlAdded(object sender, ControlEventArgs e)
{
int row = t.GetRow(e.Control); //this also gives row = -1
}