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
- xsdvalidator.cs
- HotSpotCollection.cs
- SqlMethodAttribute.cs
- BufferBuilder.cs
- SoapFault.cs
- ToolStripItemCollection.cs
- PresentationTraceSources.cs
- XmlSubtreeReader.cs
- TextServicesPropertyRanges.cs
- ValueType.cs
- HttpCapabilitiesSectionHandler.cs
- SettingsContext.cs
- MetadataCache.cs
- Completion.cs
- ByteStack.cs
- QueryContinueDragEventArgs.cs
- DataFormat.cs
- Formatter.cs
- SoapHeader.cs
- SyndicationDeserializer.cs
- MemberCollection.cs
- EdmPropertyAttribute.cs
- ListBox.cs
- PackageDigitalSignature.cs
- GroupQuery.cs
- RelOps.cs
- PtsHost.cs
- OutputCacheSettings.cs
- TreeNodeBinding.cs
- IisTraceListener.cs
- DependencyObjectType.cs
- SqlException.cs
- _TimerThread.cs
- ZoneMembershipCondition.cs
- MILUtilities.cs
- TakeOrSkipQueryOperator.cs
- DetailsViewPagerRow.cs
- DataGridViewToolTip.cs
- ConnectionManager.cs
- MulticastNotSupportedException.cs
- ToolStrip.cs
- PermissionAttributes.cs
- MexBindingElement.cs
- CompareInfo.cs
- OleDbConnection.cs
- UriExt.cs
- EntityDataSourceChangedEventArgs.cs
- DeploymentSectionCache.cs
- NetSectionGroup.cs
- TreeIterators.cs
- SkewTransform.cs
- PropertyGridView.cs
- WorkflowHostingResponseContext.cs
- StoragePropertyMapping.cs
- SqlPersonalizationProvider.cs
- InitializerFacet.cs
- SqlUserDefinedTypeAttribute.cs
- ChangeTracker.cs
- QilLoop.cs
- WebPartHelpVerb.cs
- VerificationAttribute.cs
- StylusPointPropertyInfo.cs
- Evidence.cs
- WebPartConnectionsConnectVerb.cs
- BindingContext.cs
- WindowsAuthenticationEventArgs.cs
- UriTemplateLiteralPathSegment.cs
- NativeObjectSecurity.cs
- MultiBinding.cs
- LocalizedNameDescriptionPair.cs
- XmlCharCheckingReader.cs
- BigInt.cs
- ZipIOLocalFileHeader.cs
- DataStreams.cs
- ToolStripDropDownClosingEventArgs.cs
- ReadContentAsBinaryHelper.cs
- DynamicMetaObjectBinder.cs
- CodeExpressionCollection.cs
- RuntimeResourceSet.cs
- ClientOptions.cs
- ProfilePropertySettingsCollection.cs
- webclient.cs
- PropertyChangingEventArgs.cs
- TransactionContextValidator.cs
- AssemblyBuilderData.cs
- GlyphCache.cs
- GrammarBuilderPhrase.cs
- DescendantBaseQuery.cs
- SoapCommonClasses.cs
- FormCollection.cs
- PasswordBox.cs
- SizeKeyFrameCollection.cs
- HttpResponseHeader.cs
- ScaleTransform3D.cs
- MetaModel.cs
- TimeManager.cs
- TreeNodeConverter.cs
- OleDbTransaction.cs
- RuleRefElement.cs
- AssemblyUtil.cs