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
- CustomActivityDesigner.cs
- PasswordDeriveBytes.cs
- DataServiceQuery.cs
- BamlRecordWriter.cs
- PrimarySelectionGlyph.cs
- DummyDataSource.cs
- LoginNameDesigner.cs
- ShowExpandedMultiValueConverter.cs
- DataGridRelationshipRow.cs
- TrustSection.cs
- ApplicationGesture.cs
- HttpCacheVaryByContentEncodings.cs
- SharedDp.cs
- PreservationFileWriter.cs
- HttpPostLocalhostServerProtocol.cs
- BuildProvidersCompiler.cs
- OutKeywords.cs
- Properties.cs
- EventManager.cs
- PropertyItemInternal.cs
- XmlSchemaSimpleContentExtension.cs
- DataKeyCollection.cs
- GetPageCompletedEventArgs.cs
- SharedDp.cs
- ColumnBinding.cs
- ClassicBorderDecorator.cs
- SortedDictionary.cs
- SBCSCodePageEncoding.cs
- XmlSchemaSimpleContentExtension.cs
- TextEditorTables.cs
- TextElementCollectionHelper.cs
- UpDownEvent.cs
- TypeForwardedToAttribute.cs
- _Semaphore.cs
- LiteralControl.cs
- StickyNoteAnnotations.cs
- Stylesheet.cs
- InlineUIContainer.cs
- TemplateBindingExpressionConverter.cs
- WebPartEditorApplyVerb.cs
- ArraySortHelper.cs
- ColorContextHelper.cs
- SortQuery.cs
- QilFactory.cs
- XmlSchemaAppInfo.cs
- XmlChildNodes.cs
- ExpressionsCollectionEditor.cs
- XPathAxisIterator.cs
- FunctionNode.cs
- _ConnectOverlappedAsyncResult.cs
- Material.cs
- IMembershipProvider.cs
- GatewayDefinition.cs
- DataSourceControl.cs
- SafeCloseHandleCritical.cs
- ListParaClient.cs
- SystemTcpConnection.cs
- Types.cs
- AssemblyBuilder.cs
- DialogResultConverter.cs
- ProviderMetadata.cs
- ServiceElement.cs
- DataGridViewElement.cs
- CommandManager.cs
- TableRow.cs
- ModelService.cs
- TileModeValidation.cs
- SmtpLoginAuthenticationModule.cs
- BoundField.cs
- HtmlAnchor.cs
- DataFormats.cs
- DataSpaceManager.cs
- ImageButton.cs
- ActiveDesignSurfaceEvent.cs
- QilPatternFactory.cs
- UInt32Storage.cs
- CursorConverter.cs
- CertificateManager.cs
- XmlnsPrefixAttribute.cs
- AtomServiceDocumentSerializer.cs
- GetPageNumberCompletedEventArgs.cs
- ResXResourceSet.cs
- XmlSerializerVersionAttribute.cs
- ObjectConverter.cs
- sqlstateclientmanager.cs
- Polygon.cs
- XDeferredAxisSource.cs
- HttpModule.cs
- DragDeltaEventArgs.cs
- BasePattern.cs
- ListViewTableRow.cs
- CheckBoxAutomationPeer.cs
- ReadOnlyTernaryTree.cs
- XmlnsCompatibleWithAttribute.cs
- ConfigUtil.cs
- webbrowsersite.cs
- DataKey.cs
- MaskedTextBoxTextEditor.cs
- TraceContext.cs
- DataServiceRequest.cs