using View = DevExpress.ExpressApp.View;
/// <summary>
/// Controller om sommige gewone popup detailviews te resizen. De lookup listviews vallen hier niet onder
/// Ook zorgt deze controller voor een soort CenterScreen van de beïnvloede popups. CenterParent werkt helaas
/// niet want er is geen parent form bekend.
/// </summary>
[DesignerCategory(OneSysConstants.NoDesigner)]
public class SetPopupSizeVC : WindowController
{
protected override void OnActivated()
{
base.OnActivated();
Window.TemplateChanged += Window_TemplateChanged;
}
protected override void OnDeactivated()
{
Window.TemplateChanged -= Window_TemplateChanged;
base.OnDeactivated();
}
private void Window_TemplateChanged(object sender, EventArgs e)
{
if (Window.Template is Form && Window.Template is ISupportStoreSettings)
{
((ISupportStoreSettings)Window.Template).SettingsReloaded += OnFormReadyForCustomizations;
}
}
private void OnFormReadyForCustomizations(object sender, EventArgs e)
{
if (!IsFormSizeProvider(Window.View)) return;
((Form)sender).Size = ((IFormSizeProvider)Window.View.CurrentObject).GetFormSize();
((Form)sender).StartPosition = FormStartPosition.CenterParent;
}
private bool IsFormSizeProvider(View view) => view?.CurrentObject is IFormSizeProvider;
}public partial class MainWindowController : WindowController
{
public MainWindowController()
{
InitializeComponent();
// Target required Windows (via the TargetXXX properties) and create their Actions.
TargetWindowType = WindowType.Main;
}
protected override void OnActivated()
{
base.OnActivated();
// Perform various tasks depending on the target Window.
Window.TemplateChanged += WindowsTemplateChanged;
}
private void WindowsTemplateChanged(object sender, EventArgs e)
{
if (Window.Template is System.Windows.Forms.Form && Window.Template is ISupportStoreSettings)
{
((ISupportStoreSettings)Window.Template).SettingsReloaded += OnFormReadyForCustomizations;
}
}
protected override void OnDeactivated()
{
Window.TemplateChanged -= WindowsTemplateChanged;
// Unsubscribe from previously subscribed events and release other references and resources.
base.OnDeactivated();
}
private void OnFormReadyForCustomizations(object sender, EventArgs e)
{
int newWidth = 1280;
int newHeight = 720;
Form mainForm = sender as System.Windows.Forms.Form;
// Ensure that the window state is normal, not maximized
mainForm.WindowState = FormWindowState.Normal;
// Setup window location to center of Window screen
mainForm.SetDesktopLocation(
(int)((SystemInformation.VirtualScreen.Width - newWidth) /2),
(int)((SystemInformation.VirtualScreen.Height - newHeight)/2));
mainForm.Width = newWidth;
mainForm.Height = newHeight;
}
} 853200cookie-checkDevExpress PopUp Window Size State