Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Designer / Drawing / System / Drawing / Design / CursorEditor.cs / 1 / CursorEditor.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Drawing.Design { using Microsoft.Win32; using System; using System.ComponentModel; using System.Diagnostics; using System.Drawing; using System.IO; using System.Collections; using System.Reflection; using System.Runtime.Serialization.Formatters; using System.Windows.Forms; using System.Windows.Forms.ComponentModel; using System.Windows.Forms.Design; ////// /// /// Provides an editor that can perform default file searching for cursor (.cur) /// files. /// [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand, Flags=System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)] [System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.InheritanceDemand, Name="FullTrust")] [System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.LinkDemand, Name="FullTrust")] public class CursorEditor : UITypeEditor { private CursorUI cursorUI; ////// /// Returns true, indicating that this drop-down control can be resized. /// public override bool IsDropDownResizable { get { return true; } } ////// /// 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. /// 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) { if (cursorUI == null) { cursorUI = new CursorUI(this); } cursorUI.Start(edSvc, value); edSvc.DropDownControl(cursorUI); value = cursorUI.Value; cursorUI.End(); } } return value; } ////// /// Retrieves the editing style of the Edit method. If the method /// is not supported, this will return None. /// public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context) { return UITypeEditorEditStyle.DropDown; } ////// /// The user interface for the cursor drop-down. This is just an owner-drawn /// list box. /// private class CursorUI : ListBox { private object value; private IWindowsFormsEditorService edSvc; private TypeConverter cursorConverter; private UITypeEditor editor; public CursorUI(UITypeEditor editor) { this.editor = editor; Height = 310; ItemHeight = (int) Math.Max(4 + Cursors.Default.Size.Height, Font.Height); DrawMode = DrawMode.OwnerDrawFixed; BorderStyle = BorderStyle.None; cursorConverter = TypeDescriptor.GetConverter(typeof(Cursor)); Debug.Assert(cursorConverter.GetStandardValuesSupported(), "Converter '" + cursorConverter.ToString() + "' does not support a list of standard values. We cannot provide a drop-down"); // Fill the list with cursors. // if (cursorConverter.GetStandardValuesSupported()) { foreach (object obj in cursorConverter.GetStandardValues()) { Items.Add(obj); } } } public object Value { get { return value; } } public void End() { edSvc = null; value = null; } protected override void OnClick(EventArgs e) { base.OnClick(e); value = SelectedItem; edSvc.CloseDropDown(); } protected override void OnDrawItem(DrawItemEventArgs die) { base.OnDrawItem(die); if (die.Index != -1) { Cursor cursor = (Cursor)Items[die.Index]; string text = cursorConverter.ConvertToString(cursor); Font font = die.Font; Brush brushText = new SolidBrush(die.ForeColor); die.DrawBackground(); die.Graphics.FillRectangle(SystemBrushes.Control, new Rectangle(die.Bounds.X + 2, die.Bounds.Y + 2, 32, die.Bounds.Height - 4)); die.Graphics.DrawRectangle(SystemPens.WindowText, new Rectangle(die.Bounds.X + 2, die.Bounds.Y + 2, 32 - 1, die.Bounds.Height - 4 - 1)); cursor.DrawStretched(die.Graphics, new Rectangle(die.Bounds.X + 2, die.Bounds.Y + 2, 32, die.Bounds.Height - 4)); die.Graphics.DrawString(text, font, brushText, die.Bounds.X + 36, die.Bounds.Y + (die.Bounds.Height - font.Height)/2); brushText.Dispose(); } } protected override bool ProcessDialogKey(Keys keyData) { if ((keyData & Keys.KeyCode) == Keys.Return && (keyData & (Keys.Alt | Keys.Control)) == 0) { OnClick( EventArgs.Empty ); return true; } return base.ProcessDialogKey(keyData); } public void Start(IWindowsFormsEditorService edSvc, object value) { this.edSvc = edSvc; this.value = value; // Select the current cursor // if (value != null) { for (int i = 0; i < Items.Count; i++) { if (Items[i] == value) { SelectedIndex = i; break; } } } } } } } // 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
- SqlDataSourceConfigureSelectPanel.cs
- ProvidePropertyAttribute.cs
- KnownTypesProvider.cs
- RectangleHotSpot.cs
- AbstractSvcMapFileLoader.cs
- AliasGenerator.cs
- WebPartUtil.cs
- KeyNameIdentifierClause.cs
- ValuePattern.cs
- InstanceData.cs
- ComponentDispatcherThread.cs
- BamlRecordReader.cs
- EventProviderTraceListener.cs
- ToolStripPanel.cs
- KeyGesture.cs
- XPathEmptyIterator.cs
- TypographyProperties.cs
- TextSelectionHelper.cs
- __FastResourceComparer.cs
- HttpResponseInternalWrapper.cs
- ObjectDataSourceStatusEventArgs.cs
- DataGridCellInfo.cs
- CustomUserNameSecurityTokenAuthenticator.cs
- MobileUITypeEditor.cs
- RadioButtonBaseAdapter.cs
- Int64Converter.cs
- DockProviderWrapper.cs
- ToolStripOverflowButton.cs
- XmlQueryOutput.cs
- PasswordDeriveBytes.cs
- Encoder.cs
- ResourceReferenceKeyNotFoundException.cs
- HttpApplicationFactory.cs
- indexingfiltermarshaler.cs
- DataSvcMapFile.cs
- Operators.cs
- LockRenewalTask.cs
- SecurityChannel.cs
- UnsafeNativeMethods.cs
- DataRowChangeEvent.cs
- TreeNodeConverter.cs
- CompilationLock.cs
- WorkflowMarkupSerializationProvider.cs
- processwaithandle.cs
- ToolBarTray.cs
- InstanceHandleConflictException.cs
- ReadOnlyCollectionBase.cs
- RegularExpressionValidator.cs
- StrongTypingException.cs
- ZipIOCentralDirectoryDigitalSignature.cs
- HitTestResult.cs
- MenuCommands.cs
- ImageClickEventArgs.cs
- sqlinternaltransaction.cs
- OrderedHashRepartitionEnumerator.cs
- RenameRuleObjectDialog.cs
- AxisAngleRotation3D.cs
- CompensatableSequenceActivity.cs
- SecurityTokenValidationException.cs
- ToolStripProgressBar.cs
- PopOutPanel.cs
- SingletonInstanceContextProvider.cs
- DiagnosticStrings.cs
- InvalidWMPVersionException.cs
- SystemWebSectionGroup.cs
- TimersDescriptionAttribute.cs
- TabletCollection.cs
- OverrideMode.cs
- DbException.cs
- SqlWebEventProvider.cs
- DefaultPropertyAttribute.cs
- PersonalizationDictionary.cs
- BaseCodePageEncoding.cs
- ByteAnimationBase.cs
- ContextProperty.cs
- TableLayoutRowStyleCollection.cs
- UInt32Storage.cs
- EntityTemplateFactory.cs
- IisTraceListener.cs
- UInt64Converter.cs
- GACMembershipCondition.cs
- NotifyInputEventArgs.cs
- DeadLetterQueue.cs
- ZipIOExtraFieldPaddingElement.cs
- TextBlockAutomationPeer.cs
- IRCollection.cs
- VisualBasicSettingsConverter.cs
- Popup.cs
- FixedSOMImage.cs
- FragmentQueryKB.cs
- ToolBarPanel.cs
- QilGenerator.cs
- MachineKeySection.cs
- Point4D.cs
- RegexEditorDialog.cs
- SqlTypeSystemProvider.cs
- BindingEntityInfo.cs
- TypeLoadException.cs
- BasicViewGenerator.cs
- DbDataSourceEnumerator.cs