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
- FlowchartSizeFeature.cs
- InputLangChangeRequestEvent.cs
- AuthenticationModuleElementCollection.cs
- InputMethodStateChangeEventArgs.cs
- RegexStringValidator.cs
- WhiteSpaceTrimStringConverter.cs
- DesignerLoader.cs
- MouseCaptureWithinProperty.cs
- InboundActivityHelper.cs
- ButtonFieldBase.cs
- TextEndOfLine.cs
- SecurityPermission.cs
- Pool.cs
- SchemaTableColumn.cs
- SQLDateTimeStorage.cs
- Component.cs
- SafeEventLogWriteHandle.cs
- XslVisitor.cs
- Encoder.cs
- TreeNode.cs
- PointAnimation.cs
- SafeHandle.cs
- DbDeleteCommandTree.cs
- NonSerializedAttribute.cs
- EllipseGeometry.cs
- JournalNavigationScope.cs
- EdmTypeAttribute.cs
- OleDbConnectionFactory.cs
- XAMLParseException.cs
- SectionUpdates.cs
- ManifestBasedResourceGroveler.cs
- AssemblyNameProxy.cs
- keycontainerpermission.cs
- Nullable.cs
- ipaddressinformationcollection.cs
- UnsafeNativeMethodsTablet.cs
- HtmlShimManager.cs
- Int32RectValueSerializer.cs
- PropertyOrder.cs
- Bidi.cs
- WebEventTraceProvider.cs
- HttpListenerPrefixCollection.cs
- CodeAttributeDeclarationCollection.cs
- DataSourceCache.cs
- LockedAssemblyCache.cs
- MeasureItemEvent.cs
- Int64AnimationUsingKeyFrames.cs
- HttpRequestCacheValidator.cs
- DateTimePickerDesigner.cs
- ConfigurationPropertyCollection.cs
- PresentationAppDomainManager.cs
- Inline.cs
- CodeAccessSecurityEngine.cs
- ProcessInfo.cs
- DocumentApplicationJournalEntryEventArgs.cs
- LoginCancelEventArgs.cs
- SQLBinary.cs
- BufferBuilder.cs
- NumberFunctions.cs
- _SslState.cs
- OptimalTextSource.cs
- Message.cs
- RevocationPoint.cs
- LineUtil.cs
- SendMessageContent.cs
- SpecialFolderEnumConverter.cs
- TreeNodeSelectionProcessor.cs
- ResolvedKeyFrameEntry.cs
- Grant.cs
- BindUriHelper.cs
- DataTableClearEvent.cs
- SByteConverter.cs
- ListViewCancelEventArgs.cs
- Manipulation.cs
- TokenDescriptor.cs
- XMLSyntaxException.cs
- SimpleMailWebEventProvider.cs
- ListenerElementsCollection.cs
- Span.cs
- OperatingSystemVersionCheck.cs
- XmlConverter.cs
- Binding.cs
- HttpContext.cs
- HtmlImage.cs
- EntityDesignerUtils.cs
- HtmlButton.cs
- SrgsSemanticInterpretationTag.cs
- TableProvider.cs
- ScrollViewerAutomationPeer.cs
- TypeInfo.cs
- DmlSqlGenerator.cs
- BooleanConverter.cs
- XmlDataDocument.cs
- MimeWriter.cs
- ExpressionsCollectionEditor.cs
- XmlSortKeyAccumulator.cs
- DBCSCodePageEncoding.cs
- SchemaEntity.cs
- listitem.cs
- CheckBoxPopupAdapter.cs