Tôi đoán chủ sở hữu của một Winform thể được thiết lập một cách rõ ràng qua các tài sản .Owner HOẶC bằng cách thông qua các chủ sở hữu trong các phương pháp quá tải ShowDialog (IWin32Window chủ sở hữu)Sự khác biệt giữa tài sản .Người sở hữu và ShowDialog (chủ sở hữu IWin32Window)?
Tôi không thể hiểu tại sao các phương pháp hiện hành vi khác nhau khi làm việc với mẫu MDI.
Tôi đã tạo MDIParent và MDIChild.
Tôi cũng có một MyDialogBox winform đơn giản hiển thị chủ sở hữu của nó khi đang tải.
MessageBox.Show("Dialog's owner is " + this.Owner.Name);
Phương pháp A - Trong tải của MDIChild Tôi đã đoạn mã sau, khiến chủ sở hữu của MyDialogBox được thiết lập để MDIChild
MyDialogBox box = new MyDialogBox();
box.Owner = this; // Set owner as MDIChild
box.ShowDialog();
Phương pháp B - Ngoài ra, trong phương thức tải MDIChild tôi đã đoạn mã sau, khiến chủ sở hữu của MyDialogBox được thiết lập để MDIParent
MyDialogBox box = new MyDialogBox();
box.ShowDialog(this); // Pass MyMDIChild as owner
Tôi cũng đọc sau đây here
Chỉ có biểu mẫu MDI có thể sở hữu một biểu mẫu khác, có thể là con MDI, hộp thoại phương thức hoặc biểu mẫu mà cha mẹ được đặt làm thông số Chủ sở hữu.
Nếu vậy Phương pháp A không hoạt động, phải không?
Tôi đang thiếu gì? Tại sao phương pháp B không đặt chủ sở hữu thành MDIChild?
Hãy thử làm điều này trong VB6 và xem liệu nó có khớp với liên kết bạn cung cấp hay không. Nếu có, tôi đoán - framework có lỗi. – shahkalpesh
Không chắc chắn về VB6 nhưng VB.NET có vẻ hoạt động giống như C# – Preets