Tôi sử dụng MDI khá nhiều, tôi thích nó nhiều hơn (nơi có thể sử dụng nó) hơn nhiều dạng nổi.
Nhưng để có được điều tốt nhất từ nó, bạn cần nắm bắt được các sự kiện của riêng bạn. Nó làm cho cuộc sống dễ dàng hơn nhiều cho bạn.
Một ví dụ về bộ xương.
Có loại xen kẽ của riêng bạn,
//Clock, Stock and Accoubts represent the actual forms in
//the MDI application. When I have multiple copies of a form
//I also give them an ID, at the time they are created, then
//include that ID in the Args class.
public enum InteruptSource
{
IS_CLOCK = 0, IS_STOCKS, IS_ACCOUNTS
}
//This particular event type is time based,
//but you can add others to it, such as document
//based.
public enum EVInterupts
{
CI_NEWDAY = 0, CI_NEWMONTH, CI_NEWYEAR, CI_PAYDAY, CI_STOCKPAYOUT,
CI_STOCKIN, DO_NEWEMAIL, DO_SAVETOARCHIVE
}
Sau đó, loại đối số của riêng bạn
public class ControlArgs
{
//MDI form source
public InteruptSource source { get; set; }
//Interrupt type
public EVInterupts clockInt { get; set; }
//in this case only a date is needed
//but normally I include optional data (as if a C UNION type)
//the form that responds to the event decides if
//the data is for it.
public DateTime date { get; set; }
//CI_STOCKIN
public StockClass inStock { get; set; }
}
Sau đó sử dụng ủy nhiệm trong không gian tên của bạn, nhưng bên ngoài một lớp
namespace MyApplication
{
public delegate void StoreHandler(object sender, ControlArgs e);
public partial class Form1 : Form
{
//your main form
}
Bây giờ, bằng tay hoặc sử dụng GUI, có MDIparent trả lời các sự kiện của biểu mẫu con.
Nhưng với đối số owr của bạn, bạn có thể giảm hàm này xuống một hàm duy nhất. và bạn có thể có điều khoản để xen vào các phần xen kẽ, tốt cho việc gỡ lỗi, nhưng cũng có thể hữu ích theo những cách khác.
Chỉ cần có mã sự kiện mdiparent của bạn trỏ đến một chức năng,
calendar.Friday += new StoreHandler(MyEvents);
calendar.Saturday += new StoreHandler(MyEvents);
calendar.Sunday += new StoreHandler(MyEvents);
calendar.PayDay += new StoreHandler(MyEvents);
calendar.NewYear += new StoreHandler(MyEvents);
Một cơ chế chuyển đổi đơn giản thường là đủ để chuyển các sự kiện sang các hình thức thích hợp.