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
- CodeStatementCollection.cs
- ScrollItemPatternIdentifiers.cs
- xmlformatgeneratorstatics.cs
- FocusManager.cs
- TrackingQuery.cs
- BamlTreeNode.cs
- HtmlHead.cs
- EncodingDataItem.cs
- SpecialFolderEnumConverter.cs
- OLEDB_Enum.cs
- OverrideMode.cs
- StylusButtonEventArgs.cs
- IdentitySection.cs
- DataGridViewColumn.cs
- UnionExpr.cs
- RelationshipEnd.cs
- InputScope.cs
- Container.cs
- ThreadSafeList.cs
- MimeFormatExtensions.cs
- CanonicalFormWriter.cs
- ClientRolePrincipal.cs
- PrintingPermissionAttribute.cs
- XmlReflectionImporter.cs
- SoundPlayerAction.cs
- ChannelServices.cs
- GridLength.cs
- ResourcesChangeInfo.cs
- MethodExecutor.cs
- ImageEditor.cs
- LowerCaseStringConverter.cs
- dbdatarecord.cs
- RawTextInputReport.cs
- BufferedReceiveManager.cs
- OleCmdHelper.cs
- externdll.cs
- RepeatButtonAutomationPeer.cs
- AuthenticationServiceManager.cs
- COM2Enum.cs
- WebPartEventArgs.cs
- ScriptBehaviorDescriptor.cs
- EndpointAddressElementBase.cs
- XmlNode.cs
- TreeViewItemAutomationPeer.cs
- ThreadExceptionDialog.cs
- Win32SafeHandles.cs
- SqlUtil.cs
- StorageAssociationSetMapping.cs
- FontFamilyConverter.cs
- PageHandlerFactory.cs
- WebUtility.cs
- TrustLevelCollection.cs
- HttpHandlerAction.cs
- HelpFileFileNameEditor.cs
- DocumentReference.cs
- EventLogStatus.cs
- LeaseManager.cs
- ReflectionPermission.cs
- ProfileSection.cs
- ControlPropertyNameConverter.cs
- Propagator.cs
- Expander.cs
- SpnegoTokenProvider.cs
- DataGridCheckBoxColumn.cs
- TreeNodeEventArgs.cs
- DropShadowEffect.cs
- ListBindingConverter.cs
- Operators.cs
- AmbientEnvironment.cs
- BlurEffect.cs
- WebBrowserUriTypeConverter.cs
- Subset.cs
- configsystem.cs
- DispatcherTimer.cs
- ReadOnlyHierarchicalDataSourceView.cs
- WebScriptMetadataMessage.cs
- WebBrowserPermission.cs
- ObjectSecurity.cs
- PrimitiveType.cs
- StringSource.cs
- ContextBase.cs
- DataGridViewCellCollection.cs
- ClientOperation.cs
- ILGenerator.cs
- ServiceDescriptions.cs
- MailWebEventProvider.cs
- LabelExpression.cs
- HttpCookieCollection.cs
- MatrixTransform.cs
- DataServiceProviderMethods.cs
- AutoGeneratedFieldProperties.cs
- XmlName.cs
- XmlLangPropertyAttribute.cs
- DataGridViewRowCancelEventArgs.cs
- FontStyles.cs
- Keyboard.cs
- MembershipPasswordException.cs
- TableLayoutPanelCodeDomSerializer.cs
- MetadataWorkspace.cs
- EventMetadata.cs