private void OnRequireElevationChanged(object sender, EventArgs e) { bool require = false; foreach (var page in _propertyPages.Values) { if (page != null && page != sender) { var elevated = page as IElevatedExecutableDialog; if (elevated != null) { if (elevated.RequireElevation) { require = true; break; } } } } if (require) { return; } RequireElevationChanged?.Invoke(this, EventArgs.Empty); }
private void OnItemActivated(object sender, ItemEventArgs e) { var desc = (e.Item as PropertyPageItem).DataContext; PropertyPage page; if (_activePage != null) { if (_activePage.Guid == desc.Guid) { return; } } if (!_propertyPages.TryGetValue(desc.Guid, out page)) { page = desc.CreatePropertyPage(_environment); bool raiseElevatedChanged = false; if (page != null) { var elevated = page as IElevatedExecutableDialog; if (elevated != null) { elevated.RequireElevationChanged += OnRequireElevationChanged; if (!RequireElevation && elevated.RequireElevation) { raiseElevatedChanged = true; } } } _propertyPages.Add(desc.Guid, page); if (raiseElevatedChanged) { RequireElevationChanged?.Invoke(this, EventArgs.Empty); } } if (page != null) { page.Dock = DockStyle.Fill; page.Parent = _pnlPageContainer; page.InvokeOnShown(); } if (_activePage != null) { _activePage.Parent = null; } _activePage = page; }