2011-09-06 17 views
8

Thông thường, các điều khiển đang được thêm vào biểu mẫu. Nhưng tôi cần phải làm một điều ngược lại - thêm một thể hiện Form để kiểm soát người dùng container.Thêm biểu mẫu vào UserControl - điều này có khả thi không?

Lý do đằng sau điều này là tôi cần phải nhúng ứng dụng của bên thứ ba vào ứng dụng của riêng mình. Việc chuyển đổi biểu mẫu thành điều khiển người dùng không khả thi do tính phức tạp.

Trả lời

11

Điều này có thể bằng cách đặt thuộc tính TopLevel của biểu mẫu thành sai. Mà biến nó thành một cửa sổ con, gần như không thể phân biệt được từ một UserControl. Dưới đây là điều khiển người dùng mẫu với mã được yêu cầu:

public partial class UserControl1 : UserControl { 
    public UserControl1() { 
     InitializeComponent(); 
    } 
    public void EmbedForm(Form frm) { 
     frm.TopLevel = false; 
     frm.FormBorderStyle = FormBorderStyle.None; 
     frm.Visible = true; 
     frm.Dock = DockStyle.Fill; // optional 
     this.Controls.Add(frm); 
    } 
} 
+0

Điều này hoạt động, cảm ơn bạn. Chỉ là một trục trặc tôi nhận thấy - hình thức nhúng ngừng phản ứng lại để thay đổi kích thước, nó vẫn cố định kích thước. Bất kỳ ý tưởng làm thế nào để sửa lỗi này? – SharpAffair

+0

Vâng, đó là bình thường, các điều khiển nhúng thường không thể thay đổi bởi người dùng. Neo điều khiển người dùng ở phía dưới và bên phải để nó thay đổi kích thước cùng với biểu mẫu đang bật, thay đổi kích thước của biểu mẫu được nhúng trong quy trình. –

+0

Cả biểu mẫu được nhúng và điều khiển người dùng đều có bộ Dock được điền. Điều khiển thay đổi kích thước, nhưng hình thức nhúng không. – SharpAffair

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