Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / WinForms / Managed / System / WinForms / DisplayInformation.cs / 1305376 / DisplayInformation.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
/*
*/
namespace System.Windows.Forms {
using Microsoft.Win32;
using System.Security;
using System.Security.Permissions;
internal class DisplayInformation {
private static bool highContrast; //whether we are under hight contrast mode
private static bool lowRes; //whether we are under low resolution mode
private static bool isTerminalServerSession; //whether this application is run on a terminal server (remote desktop)
private static bool highContrastSettingValid; //indicates whether the high contrast setting is correct
private static bool lowResSettingValid; //indicates whether the low resolution setting is correct
private static bool terminalSettingValid; //indicates whether the terminal server setting is correct
private static short bitsPerPixel;
private static bool dropShadowSettingValid;
private static bool dropShadowEnabled;
private static bool menuAccessKeysUnderlinedValid;
private static bool menuAccessKeysUnderlined;
static DisplayInformation() {
SystemEvents.UserPreferenceChanging += new UserPreferenceChangingEventHandler(UserPreferenceChanging);
SystemEvents.DisplaySettingsChanging += new EventHandler(DisplaySettingsChanging);
}
public static short BitsPerPixel {
get {
if (bitsPerPixel == 0) {
// we used to iterate through all screens, but
// for some reason unused screens can temparily appear
// in the AllScreens collection - we would honor the display
// setting of an unused screen.
// According to EnumDisplayMonitors, a primary screen check should be sufficient
bitsPerPixel = (short)Screen.PrimaryScreen.BitsPerPixel;
}
return bitsPerPixel;
}
}
///
///tests to see if the monitor is in low resolution mode (8-bit color depth or less).
///
public static bool LowResolution {
get {
if (lowResSettingValid && !lowRes) {
return lowRes;
}
// dont cache if we're in low resolution.
lowRes = BitsPerPixel <= 8;
lowResSettingValid = true;
return lowRes;
}
}
///
///tests to see if we are under high contrast mode
///
public static bool HighContrast {
get {
if (highContrastSettingValid) {
return highContrast;
}
highContrast = SystemInformation.HighContrast;
highContrastSettingValid = true;
return highContrast;
}
}
public static bool IsDropShadowEnabled {
get {
if (dropShadowSettingValid) {
return dropShadowEnabled;
}
dropShadowEnabled = SystemInformation.IsDropShadowEnabled;
dropShadowSettingValid = true;
return dropShadowEnabled;
}
}
///
///test to see if we are under terminal server mode
///
public static bool TerminalServer {
get {
if (terminalSettingValid) {
return isTerminalServerSession;
}
isTerminalServerSession = SystemInformation.TerminalServerSession;
terminalSettingValid = true;
return isTerminalServerSession;
}
}
// return if mnemonic underlines should always be there regardless of ALT
public static bool MenuAccessKeysUnderlined {
get {
if (menuAccessKeysUnderlinedValid) {
return menuAccessKeysUnderlined;
}
menuAccessKeysUnderlined = SystemInformation.MenuAccessKeysUnderlined;
menuAccessKeysUnderlinedValid = true;
return menuAccessKeysUnderlined;
}
}
///
///event handler for change in display setting
///
private static void DisplaySettingsChanging(object obj, EventArgs ea)
{
highContrastSettingValid = false;
lowResSettingValid = false;
terminalSettingValid = false;
dropShadowSettingValid = false;
menuAccessKeysUnderlinedValid = false;
}
///
///event handler for change in user preference
///
private static void UserPreferenceChanging(object obj, UserPreferenceChangingEventArgs e) {
highContrastSettingValid = false;
lowResSettingValid = false;
terminalSettingValid = false;
dropShadowSettingValid = false;
bitsPerPixel = 0;
if (e.Category == UserPreferenceCategory.General) {
menuAccessKeysUnderlinedValid =false;
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- FileLoadException.cs
- EnlistmentState.cs
- TextShapeableCharacters.cs
- EventListenerClientSide.cs
- Brush.cs
- Button.cs
- figurelength.cs
- XmlLinkedNode.cs
- XmlnsDefinitionAttribute.cs
- TypedTableBaseExtensions.cs
- Executor.cs
- WhileDesigner.cs
- Bidi.cs
- ControlBindingsCollection.cs
- PostBackOptions.cs
- Line.cs
- PackageDigitalSignatureManager.cs
- ChannelSinkStacks.cs
- ProfileGroupSettingsCollection.cs
- List.cs
- CipherData.cs
- FontCacheLogic.cs
- XmlCharType.cs
- GridViewUpdateEventArgs.cs
- WindowsSysHeader.cs
- MimeFormatter.cs
- ToolStripPanelRenderEventArgs.cs
- ReverseInheritProperty.cs
- PropertyDescriptorGridEntry.cs
- XsdDataContractImporter.cs
- EventToken.cs
- DuplicateWaitObjectException.cs
- ListBindableAttribute.cs
- NotifyInputEventArgs.cs
- DoubleLink.cs
- Repeater.cs
- QilVisitor.cs
- PageContentCollection.cs
- CodeDomSerializerBase.cs
- CachedPathData.cs
- PrincipalPermission.cs
- ConstraintStruct.cs
- TextBoxBase.cs
- LoginCancelEventArgs.cs
- Point3DCollection.cs
- UrlMappingsSection.cs
- WindowsSidIdentity.cs
- RootBrowserWindow.cs
- StringSource.cs
- PropertyEmitterBase.cs
- DispatcherFrame.cs
- OleDbDataReader.cs
- UiaCoreTypesApi.cs
- GroupBoxDesigner.cs
- Effect.cs
- ReflectPropertyDescriptor.cs
- MembershipSection.cs
- DropShadowBitmapEffect.cs
- WebPartConnectionsCancelVerb.cs
- CompoundFileDeflateTransform.cs
- AssociatedControlConverter.cs
- UnicodeEncoding.cs
- SecurityToken.cs
- SqlDataSourceFilteringEventArgs.cs
- BaseComponentEditor.cs
- TabControlAutomationPeer.cs
- ClientCultureInfo.cs
- DeclarativeCatalogPart.cs
- BidOverLoads.cs
- listitem.cs
- UnsafeNativeMethodsTablet.cs
- TypeResolvingOptions.cs
- SizeConverter.cs
- SafeRegistryHandle.cs
- ProjectedSlot.cs
- TextElementEnumerator.cs
- StorageSetMapping.cs
- Pkcs9Attribute.cs
- LambdaCompiler.cs
- ProgressBarAutomationPeer.cs
- DbCommandDefinition.cs
- RestClientProxyHandler.cs
- ChannelServices.cs
- Transactions.cs
- _NestedMultipleAsyncResult.cs
- ReadContentAsBinaryHelper.cs
- ItemType.cs
- HttpProfileGroupBase.cs
- BaseCodeDomTreeGenerator.cs
- StrongNameMembershipCondition.cs
- SchemaExporter.cs
- XomlCompilerError.cs
- KnownTypes.cs
- ThreadStateException.cs
- HtmlButton.cs
- SpecialFolderEnumConverter.cs
- ToolBarButtonClickEvent.cs
- ApplyImportsAction.cs
- CollectionViewGroup.cs
- DbParameterHelper.cs