เกริ่นนำ
การโหลดฟอร์ม ให้ไปแสดงอยู่บน Panel ตัวอย่างที่ 1-2นี้ผมก็ยังไม่ค่อยปลื้มเท่าไหร่ กับผลลัพธ์ที่ได้ออกมา( แต่อันที่ 3 สมบูรณ์แบบครับ อันนี้นายฝรั่งส่งมาให้หลังจากเขียนบทความนี้ไปแล้ว) ซึ่งผมว่ามันน่าจะเนียนกว่านี้ แต่มีอยู่ 2 วิธีที่หามาได้ แต่ก็ยังไม่สมบูรณ์แบบ แต่พอเป็นแนวทางให้ไปพัฒนาต่อไปได้ อย่างแรก การโหลดโดยใช้ Controls โหลดตรงๆเลยตามตัวอย่างดังนี้
การโหลดฟอร์ม ให้ไปแสดงอยู่บน Panel ตัวอย่างที่ 1-2นี้ผมก็ยังไม่ค่อยปลื้มเท่าไหร่ กับผลลัพธ์ที่ได้ออกมา( แต่อันที่ 3 สมบูรณ์แบบครับ อันนี้นายฝรั่งส่งมาให้หลังจากเขียนบทความนี้ไปแล้ว) ซึ่งผมว่ามันน่าจะเนียนกว่านี้ แต่มีอยู่ 2 วิธีที่หามาได้ แต่ก็ยังไม่สมบูรณ์แบบ แต่พอเป็นแนวทางให้ไปพัฒนาต่อไปได้ อย่างแรก การโหลดโดยใช้ Controls โหลดตรงๆเลยตามตัวอย่างดังนี้
วิธีที่ 1 การโหลดคอนโทรล
1 2 3 4 5 6 | TestForm1 temp = new TestForm1(); this .dockPanel7.Controls.Clear(); foreach (Control c in temp.Controls) dockPanel7.Controls.Add(c); temp.Dispose(); |
จากตัวอย่างเท่าที่ผมทำ มันโหลดให้และดูดีมากครับ แต่มันโหลดไม่ครบทุก คอนโทรล ไม่รู้ว่าสาเหตุมาจากอะไร ?
วิธีที่ 2 การโหลดฟอร์มอย่างที่สอง การโหลดทั้งฟอร์มครับ ตามนี้
1 2 3 4 5 6 7 8 | TestForm1 temp = new TestForm1(); temp.TopLevel = false ; temp.Dock = DockStyle.Fill; temp.WindowState = FormWindowState.Maximized; temp.ShowInTaskbar = false ; this .dockPanel7.Controls.Clear(); this .dockPanel7.Controls.Add(temp); temp.Show(); |
จะเห็นว่าใน panel จะเห็นทั้งฟอร์ม และมี Title Bar ด้วย
วิธีที่ 3 การโหลดฟอร์มแบบสมบูรณ์
ส่วนวิธีที่ 3 อันนี้สมบูรณ์แบบแล้วครับต่อยอดมาจากวิธีที่ 2 จะเห็นว่าเพิ่ม Panel1 ลงไปบน dockPanel7 อีกทีครับ แล้ว กำหนด temp.Dock = DockStyle.Fill;
01 02 03 04 05 06 07 08 09 10 | TestForm1 temp = new TestForm1(); temp.TopLevel = false ; temp.FormBorderStyle = FormBorderStyle.None; temp.Dock = DockStyle.Fill; temp.MaximizeBox = false ; temp.MinimizeBox = false ; temp.ControlBox = false ; panel1.Controls.Add(temp); temp.Show(); |
รูปตัวอย่างที่สมบูรณ์ก็ได้ออกมาดังนี้
จะเห็นได้ว่าเนียนขึ้นเยอะครับ รวมทั้งไม่มีรอยแตกระหว่างเฟรมด้วย อันนี้ก็ลองดูเองแล้วกันครับจะได้เห็นความแตกต่าง
You deserve I comment saying a big good feedback for you , Your solution (method 1) helped me really to do what I needed. Thanks you man.
ReplyDelete