| File: System\Windows\Forms\Design\FormatStringEditor.cs | Web Access |
| Project: src\winforms\src\System.Windows.Forms.Design\src\System.Windows.Forms.Design.csproj (System.Windows.Forms.Design) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.ComponentModel; using System.ComponentModel.Design; using System.Drawing.Design; namespace System.Windows.Forms.Design; internal class FormatStringEditor : UITypeEditor { private FormatStringDialog? _formatStringDialog; /// Edits the specified value using the specified provider within the specified context. public override object? EditValue(ITypeDescriptorContext? context, IServiceProvider provider, object? value) { if (!provider.TryGetService(out IWindowsFormsEditorService? editorService)) { return value; } object component = context?.Instance!; DataGridViewCellStyle? cellStyle = component as DataGridViewCellStyle; ListControl? listControl = component as ListControl; Debug.Assert( listControl is not null || cellStyle is not null, "this editor is used for the DataGridViewCellStyle::Format and the ListControl::FormatString properties"); Application.SetHighDpiMode(HighDpiMode.SystemAware); _formatStringDialog ??= new FormatStringDialog(context); if (listControl is not null) { _formatStringDialog.ListControl = listControl; } else { _formatStringDialog.DataGridViewCellStyle = cellStyle!; } if (provider.TryGetService(out IComponentChangeService? changeService)) { if (cellStyle is not null) { changeService.OnComponentChanging(cellStyle, TypeDescriptor.GetProperties(cellStyle)["Format"]); changeService.OnComponentChanging(cellStyle, TypeDescriptor.GetProperties(cellStyle)["NullValue"]); changeService.OnComponentChanging(cellStyle, TypeDescriptor.GetProperties(cellStyle)["FormatProvider"]); } else { changeService.OnComponentChanging(component, TypeDescriptor.GetProperties(component)["FormatString"]); changeService.OnComponentChanging(component, TypeDescriptor.GetProperties(component)["FormatInfo"]); } } editorService.ShowDialog(_formatStringDialog); FormatStringDialog.End(); if (!_formatStringDialog.Dirty) { return value; } // Since the bindings may have changed, the properties listed in the properties window need to be refreshed. TypeDescriptor.Refresh(component); if (changeService is not null) { if (cellStyle is not null) { changeService.OnComponentChanged(cellStyle, TypeDescriptor.GetProperties(cellStyle)["Format"]); changeService.OnComponentChanged(cellStyle, TypeDescriptor.GetProperties(cellStyle)["NullValue"]); changeService.OnComponentChanged(cellStyle, TypeDescriptor.GetProperties(cellStyle)["FormatProvider"]); } else { changeService.OnComponentChanged(component, TypeDescriptor.GetProperties(component)["FormatString"]); changeService.OnComponentChanged(component, TypeDescriptor.GetProperties(component)["FormatInfo"]); } } return value; } public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext? context) => UITypeEditorEditStyle.Modal; }