QUAN TRỌNG
Có sự khác biệt khi sử dụng Windows Forms hoặc WPF !!
Họ có các nhà thiết kế khác nhau và cần kiểm tra khác nhau . Ngoài ra, rất phức tạp khi bạn kết hợp các điều khiển Biểu mẫu và WPF. (ví dụ: điều khiển WPF bên trong cửa sổ Biểu mẫu)
Nếu bạn chỉ có Windows Forms , hãy sử dụng cái này:
Boolean isInWpfDesignerMode = (LicenseManager.UsageMode == LicenseUsageMode.Designtime);
Nếu bạn chỉ có WPF , hãy sử dụng kiểm tra này:
Boolean isInFormsDesignerMode = (System.Diagnostics.Process.GetCurrentProcess().ProcessName == "devenv");
Nếu bạn sử dụng hỗn hợp Biểu mẫu và WPF, hãy sử dụng kiểm tra như sau:
Boolean isInWpfDesignerMode = (LicenseManager.UsageMode == LicenseUsageMode.Designtime);
Boolean isInFormsDesignerMode = (System.Diagnostics.Process.GetCurrentProcess().ProcessName == "devenv");
if (isInWpfDesignerMode || isInFormsDesignerMode)
{
// is in any designer mode
}
else
{
// not in designer mode
}
Để xem chế độ hiện tại, bạn có thể hiển thị MessageBox để gỡ lỗi:
// show current mode
MessageBox.Show(String.Format("DESIGNER CHECK: WPF = {0} Forms = {1}", isInWpfDesignerMode, isInFormsDesignerMode));
Nhận xét:
Bạn cần thêm không gian tên System.ComponentModel và System.Diagnostics .
ISite.DesignMode
.