Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Designer / CompMod / System / ComponentModel / Design / DateTimeEditor.cs / 1 / DateTimeEditor.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
/*
*/
namespace System.ComponentModel.Design {
using System.Runtime.InteropServices;
using System.ComponentModel;
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Microsoft.Win32;
using System.Drawing;
using System.Drawing.Design;
using System.Windows.Forms;
using System.Windows.Forms.Design;
///
///
///
///
/// This date/time editor is a UITypeEditor suitable for
/// visually editing DateTime objects.
///
///
public class DateTimeEditor : UITypeEditor {
///
///
/// Edits the given object value using the editor style provided by
/// GetEditorStyle. A service provider is provided so that any
/// required editing services can be obtained.
///
[SuppressMessage("Microsoft.Security", "CA2123:OverrideLinkDemandsShouldBeIdenticalToBase")] // everything in this assembly is full trust.
public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value) {
object returnValue = value;
if (provider != null) {
IWindowsFormsEditorService edSvc = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService));
if (edSvc != null) {
using (DateTimeUI dateTimeUI = new DateTimeUI()) {
dateTimeUI.Start(edSvc, value);
edSvc.DropDownControl(dateTimeUI);
value = dateTimeUI.Value;
dateTimeUI.End();
}
}
}
return value;
}
///
///
/// Retrieves the editing style of the Edit method. If the method
/// is not supported, this will return None.
///
[SuppressMessage("Microsoft.Security", "CA2123:OverrideLinkDemandsShouldBeIdenticalToBase")] // everything in this assembly is full trust.
public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context) {
return UITypeEditorEditStyle.DropDown;
}
///
///
/// UI we drop down to pick dates.
///
private class DateTimeUI : Control {
private MonthCalendar monthCalendar = new DateTimeMonthCalendar();
private object value;
private IWindowsFormsEditorService edSvc;
///
///
///
public DateTimeUI() {
InitializeComponent();
Size = monthCalendar.SingleMonthSize;
monthCalendar.Resize += new EventHandler(this.MonthCalResize);
}
///
///
///
public object Value {
get {
return value;
}
}
///
///
///
public void End() {
edSvc = null;
value = null;
}
private void MonthCalKeyDown(object sender, KeyEventArgs e) {
switch (e.KeyCode) {
case Keys.Enter:
OnDateSelected(sender, null);
break;
}
}
///
///
///
private void InitializeComponent() {
monthCalendar.DateSelected += new DateRangeEventHandler(this.OnDateSelected);
monthCalendar.KeyDown += new KeyEventHandler(this.MonthCalKeyDown);
this.Controls.Add(monthCalendar);
}
private void MonthCalResize(object sender, EventArgs e) {
this.Size = monthCalendar.Size;
}
///
///
///
private void OnDateSelected(object sender, DateRangeEventArgs e) {
value = monthCalendar.SelectionStart;
edSvc.CloseDropDown();
}
protected override void OnGotFocus(EventArgs e) {
base.OnGotFocus(e);
monthCalendar.Focus();
}
///
///
///
public void Start(IWindowsFormsEditorService edSvc, object value) {
this.edSvc = edSvc;
this.value = value;
if (value != null) {
DateTime dt = (DateTime) value;
monthCalendar.SetDate((dt.Equals(DateTime.MinValue)) ? DateTime.Today : dt);
}
}
class DateTimeMonthCalendar : MonthCalendar {
protected override bool IsInputKey(System.Windows.Forms.Keys keyData) {
switch (keyData) {
case Keys.Enter:
return true;
}
return base.IsInputKey(keyData);
}
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ToolStripSystemRenderer.cs
- LogicalCallContext.cs
- StateRuntime.cs
- IgnoreSection.cs
- Native.cs
- UnhandledExceptionEventArgs.cs
- FilteredReadOnlyMetadataCollection.cs
- SystemWebExtensionsSectionGroup.cs
- EraserBehavior.cs
- ExpressionNode.cs
- ViewCellSlot.cs
- InsufficientMemoryException.cs
- DataFormat.cs
- XmlSchemaAnyAttribute.cs
- TextBox.cs
- DependencyProperty.cs
- HashAlgorithm.cs
- ToolStripInSituService.cs
- AssemblySettingAttributes.cs
- WindowsScrollBar.cs
- Int16.cs
- SafeSecurityHelper.cs
- InstanceKeyCompleteException.cs
- TemplateControlParser.cs
- cryptoapiTransform.cs
- MenuTracker.cs
- NativeMethods.cs
- ContainerSelectorBehavior.cs
- PKCS1MaskGenerationMethod.cs
- EntityClassGenerator.cs
- METAHEADER.cs
- HostExecutionContextManager.cs
- TextDecorationUnitValidation.cs
- Site.cs
- BinaryMessageEncodingElement.cs
- EventProviderWriter.cs
- TableRow.cs
- ListViewGroupCollectionEditor.cs
- AuthorizationRuleCollection.cs
- SigningCredentials.cs
- SimpleType.cs
- PerformanceCounterPermissionEntryCollection.cs
- ApplicationSettingsBase.cs
- Adorner.cs
- FixedSchema.cs
- XmlSchemaNotation.cs
- Line.cs
- InputReportEventArgs.cs
- DataTrigger.cs
- ISO2022Encoding.cs
- IISMapPath.cs
- CookieParameter.cs
- mansign.cs
- HandlerFactoryCache.cs
- MenuRenderer.cs
- ObjectAssociationEndMapping.cs
- BrowserTree.cs
- NamespaceEmitter.cs
- QfeChecker.cs
- LogRecordSequence.cs
- WindowClosedEventArgs.cs
- PropertyGrid.cs
- ThicknessConverter.cs
- ReferentialConstraint.cs
- ChangePassword.cs
- CryptoHelper.cs
- WebBrowserBase.cs
- TrimSurroundingWhitespaceAttribute.cs
- OracleInternalConnection.cs
- FlowDocumentScrollViewerAutomationPeer.cs
- ResourceKey.cs
- CriticalExceptions.cs
- AutomationPatternInfo.cs
- Stack.cs
- Helpers.cs
- TypeDefinition.cs
- DataGridCommandEventArgs.cs
- FrameworkContentElementAutomationPeer.cs
- DockProviderWrapper.cs
- SecurityContext.cs
- EventLogLink.cs
- UInt16.cs
- ControlSerializer.cs
- TextBoxView.cs
- TextTreeTextElementNode.cs
- recordstate.cs
- RSAPKCS1SignatureFormatter.cs
- CubicEase.cs
- SaveFileDialog.cs
- ObjectView.cs
- BCLDebug.cs
- GenerateTemporaryAssemblyTask.cs
- SpellerInterop.cs
- PersistencePipeline.cs
- TemplateLookupAction.cs
- PageThemeCodeDomTreeGenerator.cs
- Fx.cs
- XPathEmptyIterator.cs
- WindowsFont.cs
- Matrix.cs