ฉันต่อสู้กับสิ่งนี้มาระยะหนึ่งแล้วและพบว่ามีคนอีกจำนวนมากที่ต่อสู้กับ TableLayoutPanel (.net 2.0 Winforms) เช่นกัน
ปัญหา
ฉันกำลังพยายามใช้ tablelayoutpanel 'ว่าง' ซึ่งมีการกำหนด 10 คอลัมน์จากนั้นในรันไทม์เพิ่มแถวของตัวควบคุมโดยใช้โปรแกรม (เช่นหนึ่งตัวควบคุมต่อเซลล์)
อาจมีคนคิดว่ามันควรจะเรียบง่ายเหมือน
myTableLayoutPanel.Controls.Add(myControl, 0 /* Column Index */, 0 /* Row index */);
แต่นั่น (สำหรับฉัน) ไม่ได้เพิ่มแถว ดังนั้นอาจจะเพิ่มในลักษณะแถว
myTableLayoutPanel.RowStyles.Clear();
myTableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Absolute, 30F));
แต่ก็ไม่ได้ผลเช่นกัน ฉันได้ขุดคุ้ยและพบว่าการmyTableLayoutPanel.RowCount
ใช้งานเปลี่ยนไปจากเวลาออกแบบเป็นเวลาทำงานดังนั้นการทำจึงmyTableLayoutPanel.RowCount++;
ไม่ได้เพิ่มแถวอื่นแม้แต่ก่อน / หลังเพิ่มรายการ RowStyle สำหรับมัน!
ปัญหาที่เกี่ยวข้องอีกประการหนึ่งที่ฉันพบคือการควบคุมจะถูกเพิ่มลงในจอแสดงผล แต่พวกเขาทั้งหมดจะแสดงผลที่จุด 0,0 ของ TableLayoutPanel นอกจากนี้ยังไม่ได้ถูก จำกัด ให้อยู่ในขอบเขตของเซลล์ที่ควรจะเป็น แสดงอยู่ภายใน (เช่นกับ Dock = DockStyle หากยังคงมีขนาดใหญ่เกินไป / เล็กเกินไป)
ใครมีตัวอย่างการทำงานของการเพิ่มแถวและการควบคุมที่รันไทม์?