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
- XPathCompileException.cs
- SQLDouble.cs
- TextReader.cs
- QueryStringParameter.cs
- AuthenticatingEventArgs.cs
- GridViewUpdateEventArgs.cs
- SineEase.cs
- Panel.cs
- GridViewColumn.cs
- VirtualizedContainerService.cs
- TransformerInfo.cs
- TrackingServices.cs
- NegationPusher.cs
- FunctionCommandText.cs
- MetadataImporterQuotas.cs
- DataGridViewRowPostPaintEventArgs.cs
- elementinformation.cs
- RoutedEventConverter.cs
- ConstrainedDataObject.cs
- DeleteCardRequest.cs
- ClientType.cs
- SuppressMessageAttribute.cs
- SqlFlattener.cs
- TransformerInfoCollection.cs
- TextView.cs
- RecordConverter.cs
- XmlNodeReader.cs
- SecurityContext.cs
- QilList.cs
- ExcludeFromCodeCoverageAttribute.cs
- ActiveXHost.cs
- ToolStripItemImageRenderEventArgs.cs
- TableRow.cs
- FormClosedEvent.cs
- PointAnimationUsingPath.cs
- ElementHostPropertyMap.cs
- AttachedProperty.cs
- CancelEventArgs.cs
- XmlDictionary.cs
- PanelStyle.cs
- Rotation3DKeyFrameCollection.cs
- ErrorFormatterPage.cs
- XmlSiteMapProvider.cs
- SiteMapNodeCollection.cs
- ResourceManagerWrapper.cs
- UInt64.cs
- TreeNodeCollection.cs
- InitializationEventAttribute.cs
- PageVisual.cs
- FlowDocument.cs
- DataServiceCollectionOfT.cs
- IDispatchConstantAttribute.cs
- BinaryUtilClasses.cs
- RegistryKey.cs
- RegexFCD.cs
- WebServiceEnumData.cs
- GridEntryCollection.cs
- EventManager.cs
- WebServiceFaultDesigner.cs
- Decoder.cs
- _StreamFramer.cs
- SqlClientMetaDataCollectionNames.cs
- PartitionerQueryOperator.cs
- RichTextBox.cs
- AlignmentXValidation.cs
- ArgumentOutOfRangeException.cs
- XmlNamespaceMappingCollection.cs
- Pen.cs
- StringUtil.cs
- ErrorTableItemStyle.cs
- RectangleGeometry.cs
- SendMailErrorEventArgs.cs
- FieldDescriptor.cs
- ExtensibleClassFactory.cs
- DrawingState.cs
- Vector3DAnimationUsingKeyFrames.cs
- ExtractedStateEntry.cs
- FigureParaClient.cs
- UDPClient.cs
- ZipIORawDataFileBlock.cs
- NavigationPropertyAccessor.cs
- PropertyMapper.cs
- Vector3DCollectionConverter.cs
- TypeBuilderInstantiation.cs
- ServiceHostingEnvironmentSection.cs
- shaperfactory.cs
- ConsumerConnectionPoint.cs
- SchemaInfo.cs
- DocumentViewerConstants.cs
- ListControlStringCollectionEditor.cs
- SqlGenerator.cs
- ILGenerator.cs
- NewArray.cs
- PreProcessor.cs
- DesignSurfaceManager.cs
- PaperSize.cs
- XXXOnTypeBuilderInstantiation.cs
- StylusPointProperties.cs
- BroadcastEventHelper.cs
- EntityStoreSchemaGenerator.cs