Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / WinForms / Managed / System / WinForms / TextBoxRenderer.cs / 1305376 / TextBoxRenderer.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Windows.Forms {
using System;
using System.Drawing;
using System.Diagnostics.CodeAnalysis;
using System.Windows.Forms.Internal;
using System.Windows.Forms.VisualStyles;
using Microsoft.Win32;
///
///
///
/// This is a rendering class for the TextBox control.
///
///
public sealed class TextBoxRenderer {
//Make this per-thread, so that different threads can safely use these methods.
[ThreadStatic]
private static VisualStyleRenderer visualStyleRenderer = null;
private static readonly VisualStyleElement TextBoxElement = VisualStyleElement.TextBox.TextEdit.Normal;
//cannot instantiate
private TextBoxRenderer() {
}
///
///
///
/// Returns true if this class is supported for the current OS and user/application settings,
/// otherwise returns false.
///
///
public static bool IsSupported {
get {
return VisualStyleRenderer.IsSupported; // no downlevel support
}
}
private static void DrawBackground(Graphics g, Rectangle bounds, TextBoxState state) {
visualStyleRenderer.DrawBackground(g, bounds);
if (state != TextBoxState.Disabled) {
Color windowColor = visualStyleRenderer.GetColor(ColorProperty.FillColor);
if (windowColor != SystemColors.Window) {
Rectangle fillRect = visualStyleRenderer.GetBackgroundContentRectangle(g, bounds);
//then we need to re-fill the background.
using(SolidBrush brush = new SolidBrush(SystemColors.Window)) {
g.FillRectangle(brush, fillRect);
}
}
}
}
///
///
///
/// Renders a TextBox control.
///
///
[
SuppressMessage("Microsoft.Design", "CA1011:ConsiderPassingBaseTypesAsParameters") // Using Graphics instead of IDeviceContext intentionally
]
public static void DrawTextBox(Graphics g, Rectangle bounds, TextBoxState state) {
InitializeRenderer((int)state);
DrawBackground(g, bounds, state);
}
///
///
///
/// Renders a TextBox control.
///
///
public static void DrawTextBox(Graphics g, Rectangle bounds, string textBoxText, Font font, TextBoxState state) {
DrawTextBox(g, bounds, textBoxText, font, TextFormatFlags.TextBoxControl, state);
}
///
///
///
/// Renders a TextBox control.
///
///
public static void DrawTextBox(Graphics g, Rectangle bounds, string textBoxText, Font font, Rectangle textBounds, TextBoxState state) {
DrawTextBox(g, bounds, textBoxText, font, textBounds, TextFormatFlags.TextBoxControl, state);
}
///
///
///
/// Renders a TextBox control.
///
///
public static void DrawTextBox(Graphics g, Rectangle bounds, string textBoxText, Font font, TextFormatFlags flags, TextBoxState state) {
InitializeRenderer((int)state);
Rectangle textBounds = visualStyleRenderer.GetBackgroundContentRectangle(g, bounds);
textBounds.Inflate(-2, -2);
DrawTextBox(g, bounds, textBoxText, font, textBounds, flags, state);
}
///
///
///
/// Renders a TextBox control.
///
///
[
SuppressMessage("Microsoft.Design", "CA1011:ConsiderPassingBaseTypesAsParameters") // Using Graphics instead of IDeviceContext intentionally
]
public static void DrawTextBox(Graphics g, Rectangle bounds, string textBoxText, Font font, Rectangle textBounds, TextFormatFlags flags, TextBoxState state) {
InitializeRenderer((int)state);
DrawBackground(g, bounds, state);
Color textColor = visualStyleRenderer.GetColor(ColorProperty.TextColor);
TextRenderer.DrawText(g, textBoxText, font, textBounds, textColor, flags);
}
private static void InitializeRenderer(int state) {
if (visualStyleRenderer == null) {
visualStyleRenderer = new VisualStyleRenderer(TextBoxElement.ClassName, TextBoxElement.Part, state);
}
else {
visualStyleRenderer.SetParameters(TextBoxElement.ClassName, TextBoxElement.Part, state);
}
}
}
}
// 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
- StandardRuntimeEnumValidator.cs
- Documentation.cs
- StickyNoteContentControl.cs
- handlecollector.cs
- _ProxyRegBlob.cs
- CombinedTcpChannel.cs
- PowerModeChangedEventArgs.cs
- XmlMapping.cs
- PathSegment.cs
- ComponentEvent.cs
- TableLayoutPanel.cs
- CompositeActivityTypeDescriptor.cs
- ConnectionPoolManager.cs
- _SSPISessionCache.cs
- WithParamAction.cs
- ContextConfiguration.cs
- DataGridViewCellPaintingEventArgs.cs
- SerialPinChanges.cs
- TextReader.cs
- MetafileHeaderWmf.cs
- SqlUnionizer.cs
- FixedDocumentPaginator.cs
- DataControlCommands.cs
- PagerSettings.cs
- parserscommon.cs
- BitmapEffectGroup.cs
- WindowsListView.cs
- ResponseStream.cs
- SHA256CryptoServiceProvider.cs
- BounceEase.cs
- EventPropertyMap.cs
- DependencyPropertyConverter.cs
- WorkflowInstance.cs
- EdmToObjectNamespaceMap.cs
- GeneralTransform.cs
- KnownIds.cs
- nulltextcontainer.cs
- BypassElementCollection.cs
- BitmapEffectInputData.cs
- XmlFormatExtensionAttribute.cs
- JsonFormatGeneratorStatics.cs
- RoutedEvent.cs
- PrefixHandle.cs
- IsolatedStorageFile.cs
- ComponentCache.cs
- Descriptor.cs
- HandlerMappingMemo.cs
- GeneralTransform3DCollection.cs
- SpeakInfo.cs
- EventWaitHandle.cs
- NullableLongSumAggregationOperator.cs
- ConstraintConverter.cs
- NamedPipeConnectionPoolSettingsElement.cs
- StylusOverProperty.cs
- SslStream.cs
- StreamGeometry.cs
- SoapClientProtocol.cs
- HeaderedContentControl.cs
- TextLine.cs
- BadImageFormatException.cs
- SessionStateUtil.cs
- PrintDialogDesigner.cs
- BuildTopDownAttribute.cs
- XappLauncher.cs
- XmlName.cs
- AsyncOperation.cs
- TitleStyle.cs
- DataBoundLiteralControl.cs
- TranslateTransform3D.cs
- IxmlLineInfo.cs
- LocalizedNameDescriptionPair.cs
- LogFlushAsyncResult.cs
- RadioButtonRenderer.cs
- EncoderParameters.cs
- BevelBitmapEffect.cs
- TextStore.cs
- Subtree.cs
- ListParagraph.cs
- CorrelationKey.cs
- SqlCachedBuffer.cs
- UrlPath.cs
- altserialization.cs
- SerialPort.cs
- CustomBindingElementCollection.cs
- TiffBitmapEncoder.cs
- Evidence.cs
- CombinedGeometry.cs
- CaseInsensitiveComparer.cs
- Highlights.cs
- BaseDataBoundControl.cs
- PartitionedStreamMerger.cs
- CustomLineCap.cs
- NetworkInterface.cs
- SuppressIldasmAttribute.cs
- CodeLinePragma.cs
- TemplateColumn.cs
- CapacityStreamGeometryContext.cs
- ZipIOExtraField.cs
- ComplexObject.cs
- DataListCommandEventArgs.cs