참고 : WinForm컨트롤을 동적으로 제거 할 때 문제가 발생했습니다.
나는 TableLayoutPanel에 문제가 있습니다. TableLauoutPanel을 사용하여 컨트롤 dynamicall을 추가 및 제거합니다. 내 문제는, 만약 내가 중간에 컨트롤을 제거하면 (즉 TextBox1, TextBox2 및 TextBox3을 추가하고 지금은 TextBox2를 제거했다) 다른 컨트롤은 properlly 크기가 조정되지 않습니다. 마지막 컨트롤 (즉, TextBox3)이 제거되면 그 크기가 적절하게 조절됩니다. 여기에 내 코드를 첨부했습니다. 문제가 무엇입니까? 당신은 또한 동적으로 각 제어를위한 새로운 테이블 행을 만들려고하는 것처럼 보이는 때문에 /// 여기 TBL
는 TableLayoutPanel
private void AddText_Click(object sender, EventArgs e)
{
TextBox txt = new TextBox();
txt.MouseDoubleClick += new MouseEventHandler(txt_MouseDoubleClick);
txt.Multiline = true;
txt.Dock = DockStyle.Fill; NEWADD(txt);
}
private void NEWADD(Control ctrl)
{
tbl.RowCount += 1;
tbl.RowStyles.Add(new RowStyle(SizeType.Percent, 100F/tbl.RowStyles.Count));
tbl.Controls.Add(ctrl, 0, tbl.RowStyles.Count - 1);
foreach (RowStyle row in tbl.RowStyles)
{
row.SizeType = SizeType.Percent;
row.Height = 100F/(tbl.RowStyles.Count);
}
}
private void RemoveControl(Control ctrl)
{
tbl.RowCount -= 1;
tbl.Controls.Remove(ctrl);
tbl.RowStyles.Clear();
for (int i = 0; i < tbl.Controls.Count; i++)
{
tbl.RowStyles.Add(new RowStyle(SizeType.Percent, 100F /(tbl.RowStyles.Count +1)));
}
foreach (RowStyle row in tbl.RowStyles)
{
row.SizeType = SizeType.Percent;
row.Height = 100F/(tbl.RowStyles.Count);
}
tbl.Refresh();
}
void txt_MouseDoubleClick(object sender, MouseEventArgs e)
{
RemoveControl(sender as Control);
}