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
- PrefixQName.cs
- Workspace.cs
- SQLBinary.cs
- FixedSOMLineCollection.cs
- ApplicationBuildProvider.cs
- XhtmlConformanceSection.cs
- InputScopeAttribute.cs
- ToolboxComponentsCreatingEventArgs.cs
- ReceiveActivityValidator.cs
- UnitySerializationHolder.cs
- MouseGestureValueSerializer.cs
- SqlProcedureAttribute.cs
- XmlWrappingReader.cs
- AutomationEventArgs.cs
- PersistenceTypeAttribute.cs
- PropertyPathWorker.cs
- GridPatternIdentifiers.cs
- CriticalFinalizerObject.cs
- DataListItemEventArgs.cs
- EntityTransaction.cs
- DataServiceExpressionVisitor.cs
- FormatSettings.cs
- SqlParameter.cs
- TableItemProviderWrapper.cs
- AspCompat.cs
- _ConnectOverlappedAsyncResult.cs
- Cursor.cs
- SqlDataSource.cs
- Empty.cs
- PropertyMappingExceptionEventArgs.cs
- DataControlPagerLinkButton.cs
- XmlSchemaInferenceException.cs
- Tuple.cs
- SqlError.cs
- DependencyPropertyChangedEventArgs.cs
- ImageIndexConverter.cs
- Setter.cs
- ComponentEditorForm.cs
- WebZone.cs
- XsltContext.cs
- Label.cs
- AttachedPropertiesService.cs
- ToolStripKeyboardHandlingService.cs
- ExceptionHelpers.cs
- XmlResolver.cs
- ResizeGrip.cs
- TextSelectionProcessor.cs
- IdnElement.cs
- PropertyGridEditorPart.cs
- CompatibleComparer.cs
- DesignerEventService.cs
- CodeArrayIndexerExpression.cs
- ObjectStateManagerMetadata.cs
- DllHostInitializer.cs
- FontDriver.cs
- sqlser.cs
- AbsoluteQuery.cs
- TypeSystemProvider.cs
- SqlMethodTransformer.cs
- DataTrigger.cs
- DateTimeFormatInfoScanner.cs
- NamespaceListProperty.cs
- XmlAttribute.cs
- Documentation.cs
- Documentation.cs
- ConnectionPointConverter.cs
- TimeSpanStorage.cs
- WebPartDeleteVerb.cs
- RegexBoyerMoore.cs
- XmlNotation.cs
- SingleConverter.cs
- codemethodreferenceexpression.cs
- CodeAttributeArgument.cs
- Filter.cs
- TokenBasedSet.cs
- IconBitmapDecoder.cs
- safemediahandle.cs
- QuadraticBezierSegment.cs
- CodeAccessPermission.cs
- ReflectionTypeLoadException.cs
- QueryOutputWriter.cs
- DataService.cs
- WebPartDescriptionCollection.cs
- XamlInt32CollectionSerializer.cs
- MasterPage.cs
- UnsafeCollabNativeMethods.cs
- PropertyOrder.cs
- PopupEventArgs.cs
- HttpCapabilitiesSectionHandler.cs
- EmbeddedMailObjectsCollection.cs
- CodeFieldReferenceExpression.cs
- TableCellCollection.cs
- UnsafeNativeMethods.cs
- GenerateTemporaryTargetAssembly.cs
- CredentialCache.cs
- StringFunctions.cs
- DataGridViewSortCompareEventArgs.cs
- HttpException.cs
- AttachedPropertiesService.cs
- XmlWrappingReader.cs