2013-07-31 40 views
19

Tôi tạo một ứng dụng Windows Forms với C#.Cách tải biểu mẫu bên trong biểu mẫu khác trong ứng dụng giành chiến thắng

Tôi có Biểu mẫu chung và bảng điều khiển trên đó.

tôi hiển thị subform vào bảng này với mã:

SubForm objForm= SubForm.InstanceForm(); 
this.IsMdiContainer = true; 
objForm.TopLevel = false; 
pnlSubSystem.Controls.Add(objForm); 
objForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; 
objForm.Dock = DockStyle.Fill; 
objForm.Show(); 

bây giờ tôi muốn thể hiện dưới hình thức khác trên subform của bảng này, Nhưng tôi không biết làm thế nào để làm điều đó.

+3

Không có điểm trong việc thiết lập IsMdiContainer thành true khi bạn thực hiện việc này. Nếu bạn muốn biểu mẫu khác hiển thị trong bảng đó thì bạn có thể đặt thuộc tính Kích thước và Vị trí. Bạn không nhận được hành vi MDI nơi các biểu mẫu có thể trùng lặp. –

Trả lời

20

Tôi nghĩ vấn đề của bạn được giải quyết bằng mã này:

SubForm objForm= SubForm.InstanceForm(); 
    objForm.TopLevel = false; 
    pnlSubSystem.Controls.Add(objForm); 
    objForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; 
    objForm.Dock = DockStyle.Fill; 
    objForm.Show(); 
3

Như tôi đã hiểu, bạn rất thân thiết. Để thêm hình thức khác vào subform thử cùng mã thay vì:

pnlSubSystem.Controls.Add(objForm); 

sử dụng (trong đó objForm2 là mới subForm)

SubForm objForm2 = new SubForm(); 
objForm.Controls.Add(objForm2); 
3

Vì bạn đã có câu trả lời bằng cách xóa this.IsMdiContainer = true; mã của bạn sẽ chạy hoàn toàn tốt. Bởi vì tài sản IsMdiContainer thay đổi hiển thị và hành vi của biểu mẫu thành biểu mẫu cha mẹ MDI. Khi thuộc tính này được đặt thành true, biểu mẫu sẽ hiển thị khu vực khách hàng bị chìm. Tất cả các biểu mẫu con MDI được gán cho biểu mẫu cha được hiển thị trong vùng khách hàng của nó.

SubForm objForm= SubForm.InstanceForm(); 
objForm.TopLevel = false; 
pnlSubSystem.Controls.Add(objForm); 
objForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; 
objForm.Dock = DockStyle.Fill; 
objForm.Show(); 

objTiểu mẫu sẽ là mẫu cho biểu mẫu con. Mỗi lần bạn muốn tạo một cửa sổ con mới cho ứng dụng của mình, bạn có thể tạo một cá thể mới của biểu mẫu mẫu này và tạo biểu mẫu đầu tiên làm biểu mẫu gốc của nó.

//Create a new instance of the MDI child template form 
SubForm objForm = new SubForm(); 
//Set parent form for the child window 
objForm.MdiParent=this; // Last ObjForm or something 
//Display the child window 
objForm.Show(); 
0

Một cách khác:

objForm.TopLevel = false; 
objForm.Parent = pnlSubSystem; 
objForm.Show(); 

Đây là câu trả lời đầu tiên của tôi trên Stackoverflow.

Các vấn đề liên quan