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
- WebBaseEventKeyComparer.cs
- JournalEntryListConverter.cs
- ClientTargetCollection.cs
- InvokeMemberBinder.cs
- OdbcParameter.cs
- NameValueSectionHandler.cs
- DbDataAdapter.cs
- CapabilitiesPattern.cs
- EventSchemaTraceListener.cs
- Material.cs
- ProxyWebPartConnectionCollection.cs
- XXXInfos.cs
- RemotingServices.cs
- TextModifierScope.cs
- ReturnEventArgs.cs
- TextContainer.cs
- Rect3D.cs
- _RegBlobWebProxyDataBuilder.cs
- LayeredChannelFactory.cs
- SerializationObjectManager.cs
- DbProviderSpecificTypePropertyAttribute.cs
- XmlUtil.cs
- DoubleLinkList.cs
- FixedFindEngine.cs
- SerialPinChanges.cs
- MailAddressCollection.cs
- JsonMessageEncoderFactory.cs
- DateTimeEditor.cs
- PlatformNotSupportedException.cs
- ZoneLinkButton.cs
- TableCellCollection.cs
- RootAction.cs
- FontSourceCollection.cs
- DrawingVisualDrawingContext.cs
- uribuilder.cs
- Part.cs
- AdornedElementPlaceholder.cs
- EnumerationRangeValidationUtil.cs
- ExpressionContext.cs
- RangeValidator.cs
- GB18030Encoding.cs
- ConfigXmlText.cs
- TableColumn.cs
- Button.cs
- TableLayoutPanelCellPosition.cs
- ListViewUpdateEventArgs.cs
- DisplayMemberTemplateSelector.cs
- ColorConvertedBitmap.cs
- ButtonBase.cs
- CategoryNameCollection.cs
- ITextView.cs
- RadioButton.cs
- RootProfilePropertySettingsCollection.cs
- SiteMapDesignerDataSourceView.cs
- PageBreakRecord.cs
- PassportAuthenticationEventArgs.cs
- XmlSchemaValidationException.cs
- _SafeNetHandles.cs
- Quaternion.cs
- FormViewModeEventArgs.cs
- XmlDictionaryWriter.cs
- SapiAttributeParser.cs
- BitConverter.cs
- DynamicActivity.cs
- MetabaseServerConfig.cs
- QilChoice.cs
- EmptyEnumerator.cs
- LogicalCallContext.cs
- EntityDataSourceView.cs
- CanonicalFormWriter.cs
- TemplateBindingExtension.cs
- StructuredType.cs
- StateBag.cs
- WasHostedComPlusFactory.cs
- PixelShader.cs
- XmlSchemaComplexContent.cs
- FileUpload.cs
- RunClient.cs
- CanonicalFontFamilyReference.cs
- SQLInt16.cs
- Activity.cs
- RadioButton.cs
- CompilerGeneratedAttribute.cs
- MethodBuilder.cs
- UpdatePanelTrigger.cs
- RelationshipEnd.cs
- Variable.cs
- ProfileEventArgs.cs
- OpenTypeLayout.cs
- FilterException.cs
- DTCTransactionManager.cs
- CodeCompiler.cs
- StopStoryboard.cs
- TransactionsSectionGroup.cs
- DataObjectMethodAttribute.cs
- OperandQuery.cs
- Select.cs
- StylusButtonCollection.cs
- XPathNavigator.cs
- SqlUserDefinedAggregateAttribute.cs