From 5eca7ef62a296285e59abb48f5c7210e204faad3 Mon Sep 17 00:00:00 2001 From: Judit Varsanyi Rozsa Date: Mon, 11 Nov 2019 13:54:26 -0800 Subject: [PATCH 01/12] Added ColumnHeaderCollectionEditor --- .../Design/ColumnHeaderCollectionEditor.cs | 90 +++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/ColumnHeaderCollectionEditor.cs diff --git a/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/ColumnHeaderCollectionEditor.cs b/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/ColumnHeaderCollectionEditor.cs new file mode 100644 index 00000000000..d08b4bab8b1 --- /dev/null +++ b/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/ColumnHeaderCollectionEditor.cs @@ -0,0 +1,90 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.ComponentModel; +using System.ComponentModel.Design; +using System.Diagnostics; +using System.Diagnostics.CodeAnalysis; + +namespace System.Windows.Forms.Design.Editors +{ + internal class ColumnHeaderCollectionEditor : CollectionEditor + { + /// + /// Initializes a new instance of the class. + /// + + //Called through reflection + [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + public ColumnHeaderCollectionEditor(Type type) : base(type) + { + } + + + /// + /// Gets the help topic to display for the dialog help button or pressing F1. Override to display a different help topic. + /// + protected override string HelpTopic + { + get + { + return "net.ComponentModel.ColumnHeaderCollectionEditor"; + } + } + + /// + /// Sets the specified collection to have the specified array of items. + /// + protected override object SetItems(object editValue, object[] value) + { + + if (editValue != null) + { + // We look to see if the value implements IList, and if it does, we set through that. + Debug.Assert(editValue is System.Collections.IList, "editValue is not an IList"); + ListView.ColumnHeaderCollection list = editValue as ListView.ColumnHeaderCollection; + if (editValue != null) + { + list.Clear(); + ColumnHeader[] colHeaders = new ColumnHeader[value.Length]; + Array.Copy(value, 0, colHeaders, 0, value.Length); + list.AddRange(colHeaders); + } + } + + return editValue; + } + + /// + /// + /// Removes the item from listview column header collection + /// + /// + internal override void OnItemRemoving(object item) + { + if (!(Context.Instance is ListView listview)) + { + return; + } + + if (item is ColumnHeader column) + { + + IComponentChangeService cs = GetService(typeof(IComponentChangeService)) as IComponentChangeService; + PropertyDescriptor itemsProp = null; + if (cs != null) + { + itemsProp = TypeDescriptor.GetProperties(Context.Instance)["Columns"]; + cs.OnComponentChanging(Context.Instance, itemsProp); + } + listview.Columns.Remove(column); + + if (cs != null && itemsProp != null) + { + cs.OnComponentChanged(Context.Instance, itemsProp, null, null); + } + } + } + } +} From f2c8f4edc72ee5a5f40ce09974c265eebb671203 Mon Sep 17 00:00:00 2001 From: Judit Varsanyi Rozsa Date: Mon, 11 Nov 2019 14:13:33 -0800 Subject: [PATCH 02/12] ported DataGridViewCellStyleEditor --- .../src/Resources/SR.resx | 71 ++- .../src/Resources/xlf/SR.cs.xlf | 10 + .../src/Resources/xlf/SR.de.xlf | 10 + .../src/Resources/xlf/SR.es.xlf | 10 + .../src/Resources/xlf/SR.fr.xlf | 10 + .../src/Resources/xlf/SR.it.xlf | 10 + .../src/Resources/xlf/SR.ja.xlf | 10 + .../src/Resources/xlf/SR.ko.xlf | 10 + .../src/Resources/xlf/SR.pl.xlf | 10 + .../src/Resources/xlf/SR.pt-BR.xlf | 10 + .../src/Resources/xlf/SR.ru.xlf | 10 + .../src/Resources/xlf/SR.tr.xlf | 10 + .../src/Resources/xlf/SR.zh-Hans.xlf | 10 + .../src/Resources/xlf/SR.zh-Hant.xlf | 10 + .../Design/DataGridViewCellStyleBuilder.cs | 428 ++++++++++++++++++ .../Design/DataGridViewCellStyleEditor.cs | 78 ++++ .../DataGridViewComponentPropertyGridSite.cs | 74 +++ 17 files changed, 778 insertions(+), 3 deletions(-) create mode 100644 src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewCellStyleBuilder.cs create mode 100644 src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewCellStyleEditor.cs create mode 100644 src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewComponentPropertyGridSite.cs diff --git a/src/System.Windows.Forms.Design.Editors/src/Resources/SR.resx b/src/System.Windows.Forms.Design.Editors/src/Resources/SR.resx index ad84f62201a..ec1c11f68d4 100644 --- a/src/System.Windows.Forms.Design.Editors/src/Resources/SR.resx +++ b/src/System.Windows.Forms.Design.Editors/src/Resources/SR.resx @@ -1,5 +1,64 @@  + @@ -53,10 +112,10 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b77a5c561934e089 Anchor Editor @@ -159,4 +218,10 @@ Press Ctrl+Enter to accept Text. Images Collection Editor - + + Normal Preview + + + Selected Preview + + \ No newline at end of file diff --git a/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.cs.xlf b/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.cs.xlf index b27b770d473..e5de56626b5 100644 --- a/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.cs.xlf +++ b/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.cs.xlf @@ -27,6 +27,16 @@ Nahoru + + Normal Preview + Normal Preview + + + + Selected Preview + Selected Preview + + The item '{0}' cannot be removed. Položku {0} nelze odebrat. diff --git a/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.de.xlf b/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.de.xlf index f971154927d..1c20393cedf 100644 --- a/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.de.xlf +++ b/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.de.xlf @@ -27,6 +27,16 @@ Oben + + Normal Preview + Normal Preview + + + + Selected Preview + Selected Preview + + The item '{0}' cannot be removed. Das Element {0} kann nicht entfernt werden. diff --git a/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.es.xlf b/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.es.xlf index 34847878d04..7fd120d81f5 100644 --- a/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.es.xlf +++ b/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.es.xlf @@ -27,6 +27,16 @@ Parte superior + + Normal Preview + Normal Preview + + + + Selected Preview + Selected Preview + + The item '{0}' cannot be removed. No se puede quitar el elemento '{0}'. diff --git a/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.fr.xlf b/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.fr.xlf index 25509c0c42c..df7b0af507a 100644 --- a/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.fr.xlf +++ b/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.fr.xlf @@ -27,6 +27,16 @@ Haut + + Normal Preview + Normal Preview + + + + Selected Preview + Selected Preview + + The item '{0}' cannot be removed. L'élément '{0}' ne peut pas être supprimé. diff --git a/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.it.xlf b/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.it.xlf index bd6b6bee138..b59460ea577 100644 --- a/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.it.xlf +++ b/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.it.xlf @@ -27,6 +27,16 @@ Alto + + Normal Preview + Normal Preview + + + + Selected Preview + Selected Preview + + The item '{0}' cannot be removed. Impossibile rimuovere l'elemento '{0}'. diff --git a/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.ja.xlf b/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.ja.xlf index 851a88a3387..8cc67053377 100644 --- a/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.ja.xlf +++ b/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.ja.xlf @@ -27,6 +27,16 @@ + + Normal Preview + Normal Preview + + + + Selected Preview + Selected Preview + + The item '{0}' cannot be removed. 項目 '{0}' を削除できません。 diff --git a/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.ko.xlf b/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.ko.xlf index 1c9f4d25c65..8729f4cf64e 100644 --- a/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.ko.xlf +++ b/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.ko.xlf @@ -27,6 +27,16 @@ 위쪽 + + Normal Preview + Normal Preview + + + + Selected Preview + Selected Preview + + The item '{0}' cannot be removed. '{0}' 항목을 제거할 수 없습니다. diff --git a/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.pl.xlf b/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.pl.xlf index 0f021e1a37d..b8a2c49b69b 100644 --- a/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.pl.xlf +++ b/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.pl.xlf @@ -27,6 +27,16 @@ Góra + + Normal Preview + Normal Preview + + + + Selected Preview + Selected Preview + + The item '{0}' cannot be removed. Nie można usunąć elementu '{0}'. diff --git a/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.pt-BR.xlf b/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.pt-BR.xlf index 0f2feea26c7..38b341f4371 100644 --- a/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.pt-BR.xlf +++ b/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.pt-BR.xlf @@ -27,6 +27,16 @@ Superior + + Normal Preview + Normal Preview + + + + Selected Preview + Selected Preview + + The item '{0}' cannot be removed. O item '{0}' não pode ser removido. diff --git a/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.ru.xlf b/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.ru.xlf index 98f9d5339ee..2ad99e95132 100644 --- a/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.ru.xlf +++ b/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.ru.xlf @@ -27,6 +27,16 @@ По верхнему краю + + Normal Preview + Normal Preview + + + + Selected Preview + Selected Preview + + The item '{0}' cannot be removed. Невозможно удалить элемент '{0}'. diff --git a/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.tr.xlf b/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.tr.xlf index ef5b4ef9f23..4831493ce62 100644 --- a/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.tr.xlf +++ b/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.tr.xlf @@ -27,6 +27,16 @@ Üst + + Normal Preview + Normal Preview + + + + Selected Preview + Selected Preview + + The item '{0}' cannot be removed. '{0}' öğesi kaldırılamıyor. diff --git a/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.zh-Hans.xlf b/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.zh-Hans.xlf index 64acb4510a8..bdae90ef56b 100644 --- a/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.zh-Hans.xlf +++ b/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.zh-Hans.xlf @@ -27,6 +27,16 @@ 顶部 + + Normal Preview + Normal Preview + + + + Selected Preview + Selected Preview + + The item '{0}' cannot be removed. 无法移除项“{0}”。 diff --git a/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.zh-Hant.xlf b/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.zh-Hant.xlf index 1adb72f563b..013cde42a86 100644 --- a/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.zh-Hant.xlf +++ b/src/System.Windows.Forms.Design.Editors/src/Resources/xlf/SR.zh-Hant.xlf @@ -27,6 +27,16 @@ + + Normal Preview + Normal Preview + + + + Selected Preview + Selected Preview + + The item '{0}' cannot be removed. 無法移除項目 '{0}'。 diff --git a/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewCellStyleBuilder.cs b/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewCellStyleBuilder.cs new file mode 100644 index 00000000000..78773ac3df4 --- /dev/null +++ b/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewCellStyleBuilder.cs @@ -0,0 +1,428 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.ComponentModel; +using System.ComponentModel.Design; +using System.Diagnostics; + +namespace System.Windows.Forms.Design + +{ + internal class DataGridViewCellStyleBuilder : Form + { + /// + /// Required designer variable. + /// + private PropertyGrid cellStyleProperties; + private GroupBox previewGroupBox; + private Button okButton; + private Button cancelButton; + private Label label1; + private DataGridView listenerDataGridView; + private DataGridView sampleDataGridView; + private DataGridView sampleDataGridViewSelected; + private TableLayoutPanel sampleViewTableLayoutPanel; + private TableLayoutPanel okCancelTableLayoutPanel; + private TableLayoutPanel overarchingTableLayoutPanel; + private TableLayoutPanel sampleViewGridsTableLayoutPanel; + private Container components = null; + private Label normalLabel = null; + private Label selectedLabel = null; + private IHelpService helpService = null; + private IComponent comp = null; + private IServiceProvider serviceProvider = null; + + private DataGridViewCellStyle cellStyle; + private ITypeDescriptorContext context = null; + + public DataGridViewCellStyleBuilder(IServiceProvider serviceProvider, IComponent comp) + { + // + // Required for Windows Form Designer support + // + InitializeComponent(); + // + // Adds columns and rows to the grid, also resizes them + // + InitializeGrids(); + + listenerDataGridView = new System.Windows.Forms.DataGridView(); + this.serviceProvider = serviceProvider; + this.comp = comp; + + if (this.serviceProvider != null) + { + helpService = (IHelpService)serviceProvider.GetService(typeof(IHelpService)); + } + + cellStyleProperties.Site = new DataGridViewComponentPropertyGridSite(serviceProvider, comp); + } + + private void InitializeGrids() + { + sampleDataGridViewSelected.Size = new System.Drawing.Size(100, Font.Height + 9); + sampleDataGridView.Size = new System.Drawing.Size(100, Font.Height + 9); + sampleDataGridView.AccessibilityObject.Name = SR.CellStyleBuilderNormalPreviewAccName; + + DataGridViewRow row = new DataGridViewRow(); + row.Cells.Add(new DialogDataGridViewCell()); + row.Cells[0].Value = "####"; + row.Cells[0].AccessibilityObject.Name = SR.CellStyleBuilderSelectedPreviewAccName; + + sampleDataGridViewSelected.Columns.Add(new DataGridViewTextBoxColumn()); + sampleDataGridViewSelected.Rows.Add(row); + sampleDataGridViewSelected.Rows[0].Selected = true; + sampleDataGridViewSelected.AccessibilityObject.Name = SR.CellStyleBuilderSelectedPreviewAccName; + + + row = new DataGridViewRow(); + row.Cells.Add(new DialogDataGridViewCell()); + row.Cells[0].Value = "####"; + row.Cells[0].AccessibilityObject.Name = SR.CellStyleBuilderNormalPreviewAccName; + + sampleDataGridView.Columns.Add(new DataGridViewTextBoxColumn()); + sampleDataGridView.Rows.Add(row); + } + + public DataGridViewCellStyle CellStyle + { + get + { + return cellStyle; + } + set + { + cellStyle = new DataGridViewCellStyle(value); + cellStyleProperties.SelectedObject = cellStyle; + ListenerDataGridViewDefaultCellStyleChanged(null, EventArgs.Empty); + listenerDataGridView.DefaultCellStyle = cellStyle; + listenerDataGridView.DefaultCellStyleChanged += new EventHandler(ListenerDataGridViewDefaultCellStyleChanged); + } + } + + public ITypeDescriptorContext Context + { + set + { + context = value; + } + } + + private void ListenerDataGridViewDefaultCellStyleChanged(object sender, EventArgs e) + { + DataGridViewCellStyle cellStyleTmp = new DataGridViewCellStyle(cellStyle); + sampleDataGridView.DefaultCellStyle = cellStyleTmp; + sampleDataGridViewSelected.DefaultCellStyle = cellStyleTmp; + } + + /// + /// Clean up any resources being used. + /// + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (components != null) + { + components.Dispose(); + } + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + ComponentResourceManager resources = new ComponentResourceManager(typeof(DataGridViewCellStyleBuilder)); + cellStyleProperties = new PropertyGrid(); + sampleViewTableLayoutPanel = new TableLayoutPanel(); + sampleViewGridsTableLayoutPanel = new TableLayoutPanel(); + normalLabel = new Label(); + sampleDataGridView = new DataGridView(); + selectedLabel = new Label(); + sampleDataGridViewSelected = new DataGridView(); + label1 = new Label(); + okButton = new Button(); + cancelButton = new Button(); + okCancelTableLayoutPanel = new TableLayoutPanel(); + previewGroupBox = new GroupBox(); + overarchingTableLayoutPanel = new TableLayoutPanel(); + sampleViewTableLayoutPanel.SuspendLayout(); + sampleViewGridsTableLayoutPanel.SuspendLayout(); + ((ISupportInitialize)(sampleDataGridView)).BeginInit(); + ((ISupportInitialize)(sampleDataGridViewSelected)).BeginInit(); + okCancelTableLayoutPanel.SuspendLayout(); + previewGroupBox.SuspendLayout(); + overarchingTableLayoutPanel.SuspendLayout(); + SuspendLayout(); + // + // cellStyleProperties + // + resources.ApplyResources(cellStyleProperties, "cellStyleProperties"); + + // Linecolor assigned here is causing issues in the HC mode. Going with runtime default for HC mode. + if (!SystemInformation.HighContrast) + { + cellStyleProperties.LineColor = Drawing.SystemColors.ScrollBar; + } + + cellStyleProperties.Margin = new Padding(0, 0, 0, 3); + cellStyleProperties.Name = "cellStyleProperties"; + cellStyleProperties.ToolbarVisible = false; + // + // sampleViewTableLayoutPanel + // + resources.ApplyResources(sampleViewTableLayoutPanel, "sampleViewTableLayoutPanel"); + sampleViewTableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 423F)); + sampleViewTableLayoutPanel.Controls.Add(sampleViewGridsTableLayoutPanel, 0, 1); + sampleViewTableLayoutPanel.Controls.Add(label1, 0, 0); + sampleViewTableLayoutPanel.Name = "sampleViewTableLayoutPanel"; + sampleViewTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle()); + sampleViewTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle()); + // + // sampleViewGridsTableLayoutPanel + // + resources.ApplyResources(sampleViewGridsTableLayoutPanel, "sampleViewGridsTableLayoutPanel"); + sampleViewGridsTableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 10F)); + sampleViewGridsTableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 30F)); + sampleViewGridsTableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 20F)); + sampleViewGridsTableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 30F)); + sampleViewGridsTableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 10F)); + sampleViewGridsTableLayoutPanel.Controls.Add(normalLabel, 1, 0); + sampleViewGridsTableLayoutPanel.Controls.Add(sampleDataGridView, 1, 1); + sampleViewGridsTableLayoutPanel.Controls.Add(selectedLabel, 3, 0); + sampleViewGridsTableLayoutPanel.Controls.Add(sampleDataGridViewSelected, 3, 1); + sampleViewGridsTableLayoutPanel.Margin = new System.Windows.Forms.Padding(0, 3, 0, 0); + sampleViewGridsTableLayoutPanel.Name = "sampleViewGridsTableLayoutPanel"; + sampleViewGridsTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle()); + sampleViewGridsTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle()); + // + // normalLabel + // + resources.ApplyResources(normalLabel, "normalLabel"); + normalLabel.Margin = new Padding(0); + normalLabel.Name = "normalLabel"; + // + // sampleDataGridView + // + sampleDataGridView.AllowUserToAddRows = false; + resources.ApplyResources(sampleDataGridView, "sampleDataGridView"); + sampleDataGridView.ColumnHeadersVisible = false; + sampleDataGridView.Margin = new Padding(0); + sampleDataGridView.Name = "sampleDataGridView"; + sampleDataGridView.ReadOnly = true; + sampleDataGridView.RowHeadersVisible = false; + sampleDataGridView.CellStateChanged += new DataGridViewCellStateChangedEventHandler(sampleDataGridView_CellStateChanged); + // + // selectedLabel + // + resources.ApplyResources(selectedLabel, "selectedLabel"); + selectedLabel.Margin = new Padding(0); + selectedLabel.Name = "selectedLabel"; + // + // sampleDataGridViewSelected + // + sampleDataGridViewSelected.AllowUserToAddRows = false; + resources.ApplyResources(sampleDataGridViewSelected, "sampleDataGridViewSelected"); + sampleDataGridViewSelected.ColumnHeadersVisible = false; + sampleDataGridViewSelected.Margin = new Padding(0); + sampleDataGridViewSelected.Name = "sampleDataGridViewSelected"; + sampleDataGridViewSelected.ReadOnly = true; + sampleDataGridViewSelected.RowHeadersVisible = false; + // + // label1 + // + resources.ApplyResources(label1, "label1"); + label1.Margin = new Padding(0, 0, 0, 3); + label1.Name = "label1"; + // + // okButton + // + resources.ApplyResources(okButton, "okButton"); + okButton.DialogResult = DialogResult.OK; + okButton.Margin = new Padding(0, 0, 3, 0); + okButton.Name = "okButton"; + // + // cancelButton + // + resources.ApplyResources(cancelButton, "cancelButton"); + cancelButton.DialogResult = DialogResult.Cancel; + cancelButton.Margin = new Padding(3, 0, 0, 0); + cancelButton.Name = "cancelButton"; + // + // okCancelTableLayoutPanel + // + resources.ApplyResources(okCancelTableLayoutPanel, "okCancelTableLayoutPanel"); + okCancelTableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F)); + okCancelTableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F)); + okCancelTableLayoutPanel.Controls.Add(okButton, 0, 0); + okCancelTableLayoutPanel.Controls.Add(cancelButton, 1, 0); + okCancelTableLayoutPanel.Margin = new System.Windows.Forms.Padding(0, 3, 0, 0); + okCancelTableLayoutPanel.Name = "okCancelTableLayoutPanel"; + okCancelTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle()); + // + // previewGroupBox + // + resources.ApplyResources(previewGroupBox, "previewGroupBox"); + previewGroupBox.Controls.Add(sampleViewTableLayoutPanel); + previewGroupBox.Margin = new Padding(0, 3, 0, 3); + previewGroupBox.Name = "previewGroupBox"; + previewGroupBox.TabStop = false; + // + // overarchingTableLayoutPanel + // + resources.ApplyResources(overarchingTableLayoutPanel, "overarchingTableLayoutPanel"); + overarchingTableLayoutPanel.ColumnStyles.Add(new ColumnStyle()); + overarchingTableLayoutPanel.Controls.Add(cellStyleProperties, 0, 0); + overarchingTableLayoutPanel.Controls.Add(okCancelTableLayoutPanel, 0, 2); + overarchingTableLayoutPanel.Controls.Add(previewGroupBox, 0, 1); + overarchingTableLayoutPanel.Name = "overarchingTableLayoutPanel"; + overarchingTableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Percent, 100F)); + overarchingTableLayoutPanel.RowStyles.Add(new RowStyle()); + overarchingTableLayoutPanel.RowStyles.Add(new RowStyle()); + // + // DataGridViewCellStyleBuilder + // + resources.ApplyResources(this, "$this"); + AutoScaleDimensions = new Drawing.SizeF(6F, 13F); + AutoScaleMode = AutoScaleMode.Font; + Controls.Add(overarchingTableLayoutPanel); + FormBorderStyle = FormBorderStyle.FixedDialog; + HelpButton = true; + MaximizeBox = false; + MinimizeBox = false; + Name = "DataGridViewCellStyleBuilder"; + ShowIcon = false; + ShowInTaskbar = false; + HelpButtonClicked += new System.ComponentModel.CancelEventHandler(DataGridViewCellStyleBuilder_HelpButtonClicked); + HelpRequested += new System.Windows.Forms.HelpEventHandler(DataGridViewCellStyleBuilder_HelpRequested); + Load += new System.EventHandler(DataGridViewCellStyleBuilder_Load); + sampleViewTableLayoutPanel.ResumeLayout(false); + sampleViewTableLayoutPanel.PerformLayout(); + sampleViewGridsTableLayoutPanel.ResumeLayout(false); + sampleViewGridsTableLayoutPanel.PerformLayout(); + ((ISupportInitialize)(sampleDataGridView)).EndInit(); + ((ISupportInitialize)(sampleDataGridViewSelected)).EndInit(); + okCancelTableLayoutPanel.ResumeLayout(false); + okCancelTableLayoutPanel.PerformLayout(); + previewGroupBox.ResumeLayout(false); + previewGroupBox.PerformLayout(); + overarchingTableLayoutPanel.ResumeLayout(false); + overarchingTableLayoutPanel.PerformLayout(); + ResumeLayout(false); + } + #endregion + + protected override bool ProcessDialogKey(Keys keyData) + { + if ((keyData & Keys.Modifiers) == 0 && (keyData & Keys.KeyCode) == Keys.Escape) + { + Close(); + return true; + } + else + { + return base.ProcessDialogKey(keyData); + } + } + + private void DataGridViewCellStyleBuilder_HelpButtonClicked(object sender, CancelEventArgs e) + { + e.Cancel = true; + DataGridViewCellStyleBuilder_HelpRequestHandled(); + } + + private void DataGridViewCellStyleBuilder_HelpRequested(object sender, System.Windows.Forms.HelpEventArgs e) + { + e.Handled = true; + DataGridViewCellStyleBuilder_HelpRequestHandled(); + } + + private void DataGridViewCellStyleBuilder_HelpRequestHandled() + { + IHelpService helpService = context.GetService(typeof(IHelpService)) as IHelpService; + if (helpService != null) + { + helpService.ShowHelpFromKeyword("vs.CellStyleDialog"); + } + } + + private void DataGridViewCellStyleBuilder_Load(object sender, System.EventArgs e) + { + // The cell inside the sampleDataGridView should not be selected. + sampleDataGridView.ClearSelection(); + + // make sure that the cell inside the sampleDataGridView and sampleDataGridViewSelected fill their + // respective dataGridView's + sampleDataGridView.Rows[0].Height = sampleDataGridView.Height; + sampleDataGridView.Columns[0].Width = sampleDataGridView.Width; + + sampleDataGridViewSelected.Rows[0].Height = sampleDataGridViewSelected.Height; + sampleDataGridViewSelected.Columns[0].Width = sampleDataGridViewSelected.Width; + + // sync the Layout event for both sample DataGridView's + // so that when the sample DataGridView's are laid out we know to change the size of their cells + sampleDataGridView.Layout += new System.Windows.Forms.LayoutEventHandler(sampleDataGridView_Layout); + sampleDataGridViewSelected.Layout += new System.Windows.Forms.LayoutEventHandler(sampleDataGridView_Layout); + } + + private void sampleDataGridView_CellStateChanged(object sender, System.Windows.Forms.DataGridViewCellStateChangedEventArgs e) + { + Debug.Assert(e.Cell == sampleDataGridView.Rows[0].Cells[0], "the sample data grid view has only one cell"); + Debug.Assert(sender == sampleDataGridView, "did we forget to unhook notification"); + if ((e.StateChanged & DataGridViewElementStates.Selected) != 0 && (e.Cell.State & DataGridViewElementStates.Selected) != 0) + { + // The cell inside the sample data grid view became selected. + // We don't want that to happen + sampleDataGridView.ClearSelection(); + } + } + + private void sampleDataGridView_Layout(object sender, System.Windows.Forms.LayoutEventArgs e) + { + DataGridView dataGridView = (DataGridView)sender; + dataGridView.Rows[0].Height = dataGridView.Height; + dataGridView.Columns[0].Width = dataGridView.Width; + } + + private class DialogDataGridViewCell : DataGridViewTextBoxCell + { + DialogDataGridViewCellAccessibleObject accObj = null; + protected override AccessibleObject CreateAccessibilityInstance() + { + if (accObj == null) + { + accObj = new DialogDataGridViewCellAccessibleObject(this); + } + + return accObj; + } + + private class DialogDataGridViewCellAccessibleObject : DataGridViewCell.DataGridViewCellAccessibleObject + { + public DialogDataGridViewCellAccessibleObject(DataGridViewCell owner) : base(owner) + { + } + + string name = ""; + public override string Name + { + get + { + return name; + } + set + { + name = value; + } + + } + } + } + } +} diff --git a/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewCellStyleEditor.cs b/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewCellStyleEditor.cs new file mode 100644 index 00000000000..c5ed641f689 --- /dev/null +++ b/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewCellStyleEditor.cs @@ -0,0 +1,78 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.ComponentModel; +using System.Diagnostics; +using System.Drawing; +using System.Drawing.Design; + +namespace System.Windows.Forms.Design.Editors +{ + internal class DataGridViewCellStyleEditor : UITypeEditor + { + + private DataGridViewCellStyleBuilder builderDialog; + + /// + /// 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) + { + + Debug.Assert(provider != null, "No service provider; we cannot edit the value"); + if (provider != null) + { + IWindowsFormsEditorService edSvc = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService)); + IUIService uiService = (IUIService)provider.GetService(typeof(IUIService)); + IComponent comp = context.Instance as IComponent; + + Debug.Assert(edSvc != null, "No editor service; we cannot edit the value"); + if (edSvc != null) + { + using (DpiHelper.EnterDpiAwarenessScope(DpiAwarenessContext.DPI_AWARENESS_CONTEXT_SYSTEM_AWARE)) + { + if (builderDialog == null) + { + builderDialog = new DataGridViewCellStyleBuilder(provider, comp); + } + + if (uiService != null) + { + builderDialog.Font = (Font)uiService.Styles["DialogFont"]; + } + + DataGridViewCellStyle dgvcs = value as DataGridViewCellStyle; + if (dgvcs != null) + { + builderDialog.CellStyle = dgvcs; + } + + builderDialog.Context = context; + + try + { + if (builderDialog.ShowDialog() == DialogResult.OK) + { + value = builderDialog.CellStyle; + } + } + finally + { + } + } + } + } + + 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.Modal; + } + } +} diff --git a/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewComponentPropertyGridSite.cs b/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewComponentPropertyGridSite.cs new file mode 100644 index 00000000000..79172e66f42 --- /dev/null +++ b/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewComponentPropertyGridSite.cs @@ -0,0 +1,74 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.ComponentModel; + +namespace System.Windows.Forms.Design +{ + internal class DataGridViewComponentPropertyGridSite : ISite + { + + private IServiceProvider sp; + private IComponent comp; + private bool inGetService = false; + + public DataGridViewComponentPropertyGridSite(IServiceProvider sp, IComponent comp) + { + this.sp = sp; + this.comp = comp; + } + + /** The component sited by this component site. */ + /// + /// + /// When implemented by a class, gets the component associated with the . + /// + public IComponent Component { get { return comp; } } + + /** The container in which the component is sited. */ + /// + /// + /// When implemented by a class, gets the container associated with the . + /// + public IContainer Container { get { return null; } } + + /** Indicates whether the component is in design mode. */ + /// + /// + /// When implemented by a class, determines whether the component is in design mode. + /// + public bool DesignMode { get { return false; } } + + /** + * The name of the component. + */ + /// + /// + /// When implemented by a class, gets or sets the name of + /// the component associated with the . + /// + public string Name + { + get { return null; } + set { } + } + + public object GetService(Type t) + { + if (!inGetService && sp != null) + { + try + { + inGetService = true; + return sp.GetService(t); + } + finally + { + inGetService = false; + } + } + return null; + } + } +} From 84829f3e2585f24d5d0864891d9b31fd01ee3d71 Mon Sep 17 00:00:00 2001 From: Judit Varsanyi Rozsa Date: Mon, 11 Nov 2019 14:17:10 -0800 Subject: [PATCH 03/12] remove auto generated comment in SR.resx --- .../src/Resources/SR.resx | 59 ------------------- 1 file changed, 59 deletions(-) diff --git a/src/System.Windows.Forms.Design.Editors/src/Resources/SR.resx b/src/System.Windows.Forms.Design.Editors/src/Resources/SR.resx index ec1c11f68d4..c58675540ff 100644 --- a/src/System.Windows.Forms.Design.Editors/src/Resources/SR.resx +++ b/src/System.Windows.Forms.Design.Editors/src/Resources/SR.resx @@ -1,64 +1,5 @@  - From 760c95cf83b71f2282abb8b2ba351efbff052ed9 Mon Sep 17 00:00:00 2001 From: Judit Varsanyi Rozsa Date: Tue, 12 Nov 2019 10:41:40 -0800 Subject: [PATCH 04/12] cleanup --- .../Design/ColumnHeaderCollectionEditor.cs | 47 +- .../Design/DataGridViewCellStyleBuilder.cs | 423 ++++++++---------- .../Design/DataGridViewCellStyleEditor.cs | 13 +- .../DataGridViewComponentPropertyGridSite.cs | 55 +-- 4 files changed, 226 insertions(+), 312 deletions(-) diff --git a/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/ColumnHeaderCollectionEditor.cs b/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/ColumnHeaderCollectionEditor.cs index d08b4bab8b1..e047769ac70 100644 --- a/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/ColumnHeaderCollectionEditor.cs +++ b/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/ColumnHeaderCollectionEditor.cs @@ -5,62 +5,44 @@ using System.ComponentModel; using System.ComponentModel.Design; using System.Diagnostics; -using System.Diagnostics.CodeAnalysis; namespace System.Windows.Forms.Design.Editors { internal class ColumnHeaderCollectionEditor : CollectionEditor { - /// + /// /// Initializes a new instance of the class. - /// - - //Called through reflection - [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + /// public ColumnHeaderCollectionEditor(Type type) : base(type) { } - - /// + /// /// Gets the help topic to display for the dialog help button or pressing F1. Override to display a different help topic. - /// + /// protected override string HelpTopic { - get - { - return "net.ComponentModel.ColumnHeaderCollectionEditor"; - } + get => "net.ComponentModel.ColumnHeaderCollectionEditor"; } - /// + /// /// Sets the specified collection to have the specified array of items. - /// + /// protected override object SetItems(object editValue, object[] value) { - - if (editValue != null) + if (editValue is ListView.ColumnHeaderCollection list) { - // We look to see if the value implements IList, and if it does, we set through that. - Debug.Assert(editValue is System.Collections.IList, "editValue is not an IList"); - ListView.ColumnHeaderCollection list = editValue as ListView.ColumnHeaderCollection; - if (editValue != null) - { - list.Clear(); - ColumnHeader[] colHeaders = new ColumnHeader[value.Length]; - Array.Copy(value, 0, colHeaders, 0, value.Length); - list.AddRange(colHeaders); - } + list.Clear(); + ColumnHeader[] colHeaders = new ColumnHeader[value.Length]; + Array.Copy(value, 0, colHeaders, 0, value.Length); + list.AddRange(colHeaders); } - return editValue; } - /// - /// + /// /// Removes the item from listview column header collection - /// - /// + /// internal override void OnItemRemoving(object item) { if (!(Context.Instance is ListView listview)) @@ -70,7 +52,6 @@ internal override void OnItemRemoving(object item) if (item is ColumnHeader column) { - IComponentChangeService cs = GetService(typeof(IComponentChangeService)) as IComponentChangeService; PropertyDescriptor itemsProp = null; if (cs != null) diff --git a/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewCellStyleBuilder.cs b/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewCellStyleBuilder.cs index 78773ac3df4..e02a6507c07 100644 --- a/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewCellStyleBuilder.cs +++ b/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewCellStyleBuilder.cs @@ -14,106 +14,94 @@ internal class DataGridViewCellStyleBuilder : Form /// /// Required designer variable. /// - private PropertyGrid cellStyleProperties; - private GroupBox previewGroupBox; - private Button okButton; - private Button cancelButton; - private Label label1; - private DataGridView listenerDataGridView; - private DataGridView sampleDataGridView; - private DataGridView sampleDataGridViewSelected; - private TableLayoutPanel sampleViewTableLayoutPanel; - private TableLayoutPanel okCancelTableLayoutPanel; - private TableLayoutPanel overarchingTableLayoutPanel; - private TableLayoutPanel sampleViewGridsTableLayoutPanel; - private Container components = null; - private Label normalLabel = null; - private Label selectedLabel = null; - private IHelpService helpService = null; - private IComponent comp = null; - private IServiceProvider serviceProvider = null; - - private DataGridViewCellStyle cellStyle; - private ITypeDescriptorContext context = null; + private PropertyGrid _cellStyleProperties; + private GroupBox _previewGroupBox; + private Button _okButton; + private Button _cancelButton; + private Label _label1; + private DataGridView _listenerDataGridView; + private DataGridView _sampleDataGridView; + private DataGridView _sampleDataGridViewSelected; + private TableLayoutPanel _sampleViewTableLayoutPanel; + private TableLayoutPanel _okCancelTableLayoutPanel; + private TableLayoutPanel _overarchingTableLayoutPanel; + private TableLayoutPanel _sampleViewGridsTableLayoutPanel; + private Container _components = null; + private Label _normalLabel = null; + private Label _selectedLabel = null; + private IHelpService _helpService = null; + private IComponent _comp = null; + private IServiceProvider _serviceProvider = null; + + private DataGridViewCellStyle _cellStyle; + private ITypeDescriptorContext _context = null; public DataGridViewCellStyleBuilder(IServiceProvider serviceProvider, IComponent comp) { - // // Required for Windows Form Designer support - // InitializeComponent(); - // // Adds columns and rows to the grid, also resizes them - // InitializeGrids(); - listenerDataGridView = new System.Windows.Forms.DataGridView(); - this.serviceProvider = serviceProvider; - this.comp = comp; + _listenerDataGridView = new System.Windows.Forms.DataGridView(); + _serviceProvider = serviceProvider; + _comp = comp; - if (this.serviceProvider != null) + if (_serviceProvider != null) { - helpService = (IHelpService)serviceProvider.GetService(typeof(IHelpService)); + _helpService = (IHelpService)serviceProvider.GetService(typeof(IHelpService)); } - - cellStyleProperties.Site = new DataGridViewComponentPropertyGridSite(serviceProvider, comp); + _cellStyleProperties.Site = new DataGridViewComponentPropertyGridSite(serviceProvider, comp); } private void InitializeGrids() { - sampleDataGridViewSelected.Size = new System.Drawing.Size(100, Font.Height + 9); - sampleDataGridView.Size = new System.Drawing.Size(100, Font.Height + 9); - sampleDataGridView.AccessibilityObject.Name = SR.CellStyleBuilderNormalPreviewAccName; + _sampleDataGridViewSelected.Size = new System.Drawing.Size(100, Font.Height + 9); + _sampleDataGridView.Size = new System.Drawing.Size(100, Font.Height + 9); + _sampleDataGridView.AccessibilityObject.Name = SR.CellStyleBuilderNormalPreviewAccName; DataGridViewRow row = new DataGridViewRow(); row.Cells.Add(new DialogDataGridViewCell()); row.Cells[0].Value = "####"; row.Cells[0].AccessibilityObject.Name = SR.CellStyleBuilderSelectedPreviewAccName; - sampleDataGridViewSelected.Columns.Add(new DataGridViewTextBoxColumn()); - sampleDataGridViewSelected.Rows.Add(row); - sampleDataGridViewSelected.Rows[0].Selected = true; - sampleDataGridViewSelected.AccessibilityObject.Name = SR.CellStyleBuilderSelectedPreviewAccName; - + _sampleDataGridViewSelected.Columns.Add(new DataGridViewTextBoxColumn()); + _sampleDataGridViewSelected.Rows.Add(row); + _sampleDataGridViewSelected.Rows[0].Selected = true; + _sampleDataGridViewSelected.AccessibilityObject.Name = SR.CellStyleBuilderSelectedPreviewAccName; row = new DataGridViewRow(); row.Cells.Add(new DialogDataGridViewCell()); row.Cells[0].Value = "####"; row.Cells[0].AccessibilityObject.Name = SR.CellStyleBuilderNormalPreviewAccName; - sampleDataGridView.Columns.Add(new DataGridViewTextBoxColumn()); - sampleDataGridView.Rows.Add(row); + _sampleDataGridView.Columns.Add(new DataGridViewTextBoxColumn()); + _sampleDataGridView.Rows.Add(row); } public DataGridViewCellStyle CellStyle { - get - { - return cellStyle; - } + get => _cellStyle; set { - cellStyle = new DataGridViewCellStyle(value); - cellStyleProperties.SelectedObject = cellStyle; + _cellStyle = new DataGridViewCellStyle(value); + _cellStyleProperties.SelectedObject = _cellStyle; ListenerDataGridViewDefaultCellStyleChanged(null, EventArgs.Empty); - listenerDataGridView.DefaultCellStyle = cellStyle; - listenerDataGridView.DefaultCellStyleChanged += new EventHandler(ListenerDataGridViewDefaultCellStyleChanged); + _listenerDataGridView.DefaultCellStyle = _cellStyle; + _listenerDataGridView.DefaultCellStyleChanged += new EventHandler(ListenerDataGridViewDefaultCellStyleChanged); } } public ITypeDescriptorContext Context { - set - { - context = value; - } + set => _context = value; } private void ListenerDataGridViewDefaultCellStyleChanged(object sender, EventArgs e) { - DataGridViewCellStyle cellStyleTmp = new DataGridViewCellStyle(cellStyle); - sampleDataGridView.DefaultCellStyle = cellStyleTmp; - sampleDataGridViewSelected.DefaultCellStyle = cellStyleTmp; + DataGridViewCellStyle cellStyleTmp = new DataGridViewCellStyle(_cellStyle); + _sampleDataGridView.DefaultCellStyle = cellStyleTmp; + _sampleDataGridViewSelected.DefaultCellStyle = cellStyleTmp; } /// @@ -123,9 +111,9 @@ protected override void Dispose(bool disposing) { if (disposing) { - if (components != null) + if (_components != null) { - components.Dispose(); + _components.Dispose(); } } base.Dispose(disposing); @@ -133,165 +121,136 @@ protected override void Dispose(bool disposing) #region Windows Form Designer generated code /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. + /// Required method for Designer support - do not modify the contents of this method with the code editor. /// private void InitializeComponent() { ComponentResourceManager resources = new ComponentResourceManager(typeof(DataGridViewCellStyleBuilder)); - cellStyleProperties = new PropertyGrid(); - sampleViewTableLayoutPanel = new TableLayoutPanel(); - sampleViewGridsTableLayoutPanel = new TableLayoutPanel(); - normalLabel = new Label(); - sampleDataGridView = new DataGridView(); - selectedLabel = new Label(); - sampleDataGridViewSelected = new DataGridView(); - label1 = new Label(); - okButton = new Button(); - cancelButton = new Button(); - okCancelTableLayoutPanel = new TableLayoutPanel(); - previewGroupBox = new GroupBox(); - overarchingTableLayoutPanel = new TableLayoutPanel(); - sampleViewTableLayoutPanel.SuspendLayout(); - sampleViewGridsTableLayoutPanel.SuspendLayout(); - ((ISupportInitialize)(sampleDataGridView)).BeginInit(); - ((ISupportInitialize)(sampleDataGridViewSelected)).BeginInit(); - okCancelTableLayoutPanel.SuspendLayout(); - previewGroupBox.SuspendLayout(); - overarchingTableLayoutPanel.SuspendLayout(); + _cellStyleProperties = new PropertyGrid(); + _sampleViewTableLayoutPanel = new TableLayoutPanel(); + _sampleViewGridsTableLayoutPanel = new TableLayoutPanel(); + _normalLabel = new Label(); + _sampleDataGridView = new DataGridView(); + _selectedLabel = new Label(); + _sampleDataGridViewSelected = new DataGridView(); + _label1 = new Label(); + _okButton = new Button(); + _cancelButton = new Button(); + _okCancelTableLayoutPanel = new TableLayoutPanel(); + _previewGroupBox = new GroupBox(); + _overarchingTableLayoutPanel = new TableLayoutPanel(); + _sampleViewTableLayoutPanel.SuspendLayout(); + _sampleViewGridsTableLayoutPanel.SuspendLayout(); + ((ISupportInitialize)(_sampleDataGridView)).BeginInit(); + ((ISupportInitialize)(_sampleDataGridViewSelected)).BeginInit(); + _okCancelTableLayoutPanel.SuspendLayout(); + _previewGroupBox.SuspendLayout(); + _overarchingTableLayoutPanel.SuspendLayout(); SuspendLayout(); - // // cellStyleProperties - // - resources.ApplyResources(cellStyleProperties, "cellStyleProperties"); + resources.ApplyResources(_cellStyleProperties, "cellStyleProperties"); // Linecolor assigned here is causing issues in the HC mode. Going with runtime default for HC mode. if (!SystemInformation.HighContrast) { - cellStyleProperties.LineColor = Drawing.SystemColors.ScrollBar; + _cellStyleProperties.LineColor = Drawing.SystemColors.ScrollBar; } - cellStyleProperties.Margin = new Padding(0, 0, 0, 3); - cellStyleProperties.Name = "cellStyleProperties"; - cellStyleProperties.ToolbarVisible = false; - // + _cellStyleProperties.Margin = new Padding(0, 0, 0, 3); + _cellStyleProperties.Name = "cellStyleProperties"; + _cellStyleProperties.ToolbarVisible = false; // sampleViewTableLayoutPanel - // - resources.ApplyResources(sampleViewTableLayoutPanel, "sampleViewTableLayoutPanel"); - sampleViewTableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 423F)); - sampleViewTableLayoutPanel.Controls.Add(sampleViewGridsTableLayoutPanel, 0, 1); - sampleViewTableLayoutPanel.Controls.Add(label1, 0, 0); - sampleViewTableLayoutPanel.Name = "sampleViewTableLayoutPanel"; - sampleViewTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle()); - sampleViewTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle()); - // + resources.ApplyResources(_sampleViewTableLayoutPanel, "sampleViewTableLayoutPanel"); + _sampleViewTableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 423F)); + _sampleViewTableLayoutPanel.Controls.Add(_sampleViewGridsTableLayoutPanel, 0, 1); + _sampleViewTableLayoutPanel.Controls.Add(_label1, 0, 0); + _sampleViewTableLayoutPanel.Name = "sampleViewTableLayoutPanel"; + _sampleViewTableLayoutPanel.RowStyles.Add(new RowStyle()); + _sampleViewTableLayoutPanel.RowStyles.Add(new RowStyle()); // sampleViewGridsTableLayoutPanel - // - resources.ApplyResources(sampleViewGridsTableLayoutPanel, "sampleViewGridsTableLayoutPanel"); - sampleViewGridsTableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 10F)); - sampleViewGridsTableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 30F)); - sampleViewGridsTableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 20F)); - sampleViewGridsTableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 30F)); - sampleViewGridsTableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 10F)); - sampleViewGridsTableLayoutPanel.Controls.Add(normalLabel, 1, 0); - sampleViewGridsTableLayoutPanel.Controls.Add(sampleDataGridView, 1, 1); - sampleViewGridsTableLayoutPanel.Controls.Add(selectedLabel, 3, 0); - sampleViewGridsTableLayoutPanel.Controls.Add(sampleDataGridViewSelected, 3, 1); - sampleViewGridsTableLayoutPanel.Margin = new System.Windows.Forms.Padding(0, 3, 0, 0); - sampleViewGridsTableLayoutPanel.Name = "sampleViewGridsTableLayoutPanel"; - sampleViewGridsTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle()); - sampleViewGridsTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle()); - // + resources.ApplyResources(_sampleViewGridsTableLayoutPanel, "sampleViewGridsTableLayoutPanel"); + _sampleViewGridsTableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 10F)); + _sampleViewGridsTableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 30F)); + _sampleViewGridsTableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 20F)); + _sampleViewGridsTableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 30F)); + _sampleViewGridsTableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 10F)); + _sampleViewGridsTableLayoutPanel.Controls.Add(_normalLabel, 1, 0); + _sampleViewGridsTableLayoutPanel.Controls.Add(_sampleDataGridView, 1, 1); + _sampleViewGridsTableLayoutPanel.Controls.Add(_selectedLabel, 3, 0); + _sampleViewGridsTableLayoutPanel.Controls.Add(_sampleDataGridViewSelected, 3, 1); + _sampleViewGridsTableLayoutPanel.Margin = new Padding(0, 3, 0, 0); + _sampleViewGridsTableLayoutPanel.Name = "sampleViewGridsTableLayoutPanel"; + _sampleViewGridsTableLayoutPanel.RowStyles.Add(new RowStyle()); + _sampleViewGridsTableLayoutPanel.RowStyles.Add(new RowStyle()); // normalLabel - // - resources.ApplyResources(normalLabel, "normalLabel"); - normalLabel.Margin = new Padding(0); - normalLabel.Name = "normalLabel"; - // + resources.ApplyResources(_normalLabel, "normalLabel"); + _normalLabel.Margin = new Padding(0); + _normalLabel.Name = "normalLabel"; // sampleDataGridView - // - sampleDataGridView.AllowUserToAddRows = false; - resources.ApplyResources(sampleDataGridView, "sampleDataGridView"); - sampleDataGridView.ColumnHeadersVisible = false; - sampleDataGridView.Margin = new Padding(0); - sampleDataGridView.Name = "sampleDataGridView"; - sampleDataGridView.ReadOnly = true; - sampleDataGridView.RowHeadersVisible = false; - sampleDataGridView.CellStateChanged += new DataGridViewCellStateChangedEventHandler(sampleDataGridView_CellStateChanged); - // + _sampleDataGridView.AllowUserToAddRows = false; + resources.ApplyResources(_sampleDataGridView, "sampleDataGridView"); + _sampleDataGridView.ColumnHeadersVisible = false; + _sampleDataGridView.Margin = new Padding(0); + _sampleDataGridView.Name = "sampleDataGridView"; + _sampleDataGridView.ReadOnly = true; + _sampleDataGridView.RowHeadersVisible = false; + _sampleDataGridView.CellStateChanged += new DataGridViewCellStateChangedEventHandler(sampleDataGridView_CellStateChanged); // selectedLabel - // - resources.ApplyResources(selectedLabel, "selectedLabel"); - selectedLabel.Margin = new Padding(0); - selectedLabel.Name = "selectedLabel"; - // + resources.ApplyResources(_selectedLabel, "selectedLabel"); + _selectedLabel.Margin = new Padding(0); + _selectedLabel.Name = "selectedLabel"; // sampleDataGridViewSelected - // - sampleDataGridViewSelected.AllowUserToAddRows = false; - resources.ApplyResources(sampleDataGridViewSelected, "sampleDataGridViewSelected"); - sampleDataGridViewSelected.ColumnHeadersVisible = false; - sampleDataGridViewSelected.Margin = new Padding(0); - sampleDataGridViewSelected.Name = "sampleDataGridViewSelected"; - sampleDataGridViewSelected.ReadOnly = true; - sampleDataGridViewSelected.RowHeadersVisible = false; - // + _sampleDataGridViewSelected.AllowUserToAddRows = false; + resources.ApplyResources(_sampleDataGridViewSelected, "sampleDataGridViewSelected"); + _sampleDataGridViewSelected.ColumnHeadersVisible = false; + _sampleDataGridViewSelected.Margin = new Padding(0); + _sampleDataGridViewSelected.Name = "sampleDataGridViewSelected"; + _sampleDataGridViewSelected.ReadOnly = true; + _sampleDataGridViewSelected.RowHeadersVisible = false; // label1 - // - resources.ApplyResources(label1, "label1"); - label1.Margin = new Padding(0, 0, 0, 3); - label1.Name = "label1"; - // + resources.ApplyResources(_label1, "label1"); + _label1.Margin = new Padding(0, 0, 0, 3); + _label1.Name = "label1"; // okButton - // - resources.ApplyResources(okButton, "okButton"); - okButton.DialogResult = DialogResult.OK; - okButton.Margin = new Padding(0, 0, 3, 0); - okButton.Name = "okButton"; - // + resources.ApplyResources(_okButton, "okButton"); + _okButton.DialogResult = DialogResult.OK; + _okButton.Margin = new Padding(0, 0, 3, 0); + _okButton.Name = "okButton"; // cancelButton - // - resources.ApplyResources(cancelButton, "cancelButton"); - cancelButton.DialogResult = DialogResult.Cancel; - cancelButton.Margin = new Padding(3, 0, 0, 0); - cancelButton.Name = "cancelButton"; - // + resources.ApplyResources(_cancelButton, "cancelButton"); + _cancelButton.DialogResult = DialogResult.Cancel; + _cancelButton.Margin = new Padding(3, 0, 0, 0); + _cancelButton.Name = "cancelButton"; // okCancelTableLayoutPanel - // - resources.ApplyResources(okCancelTableLayoutPanel, "okCancelTableLayoutPanel"); - okCancelTableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F)); - okCancelTableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F)); - okCancelTableLayoutPanel.Controls.Add(okButton, 0, 0); - okCancelTableLayoutPanel.Controls.Add(cancelButton, 1, 0); - okCancelTableLayoutPanel.Margin = new System.Windows.Forms.Padding(0, 3, 0, 0); - okCancelTableLayoutPanel.Name = "okCancelTableLayoutPanel"; - okCancelTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle()); - // + resources.ApplyResources(_okCancelTableLayoutPanel, "okCancelTableLayoutPanel"); + _okCancelTableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F)); + _okCancelTableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F)); + _okCancelTableLayoutPanel.Controls.Add(_okButton, 0, 0); + _okCancelTableLayoutPanel.Controls.Add(_cancelButton, 1, 0); + _okCancelTableLayoutPanel.Margin = new Padding(0, 3, 0, 0); + _okCancelTableLayoutPanel.Name = "okCancelTableLayoutPanel"; + _okCancelTableLayoutPanel.RowStyles.Add(new RowStyle()); // previewGroupBox - // - resources.ApplyResources(previewGroupBox, "previewGroupBox"); - previewGroupBox.Controls.Add(sampleViewTableLayoutPanel); - previewGroupBox.Margin = new Padding(0, 3, 0, 3); - previewGroupBox.Name = "previewGroupBox"; - previewGroupBox.TabStop = false; - // + resources.ApplyResources(_previewGroupBox, "previewGroupBox"); + _previewGroupBox.Controls.Add(_sampleViewTableLayoutPanel); + _previewGroupBox.Margin = new Padding(0, 3, 0, 3); + _previewGroupBox.Name = "previewGroupBox"; + _previewGroupBox.TabStop = false; // overarchingTableLayoutPanel - // - resources.ApplyResources(overarchingTableLayoutPanel, "overarchingTableLayoutPanel"); - overarchingTableLayoutPanel.ColumnStyles.Add(new ColumnStyle()); - overarchingTableLayoutPanel.Controls.Add(cellStyleProperties, 0, 0); - overarchingTableLayoutPanel.Controls.Add(okCancelTableLayoutPanel, 0, 2); - overarchingTableLayoutPanel.Controls.Add(previewGroupBox, 0, 1); - overarchingTableLayoutPanel.Name = "overarchingTableLayoutPanel"; - overarchingTableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Percent, 100F)); - overarchingTableLayoutPanel.RowStyles.Add(new RowStyle()); - overarchingTableLayoutPanel.RowStyles.Add(new RowStyle()); - // + resources.ApplyResources(_overarchingTableLayoutPanel, "overarchingTableLayoutPanel"); + _overarchingTableLayoutPanel.ColumnStyles.Add(new ColumnStyle()); + _overarchingTableLayoutPanel.Controls.Add(_cellStyleProperties, 0, 0); + _overarchingTableLayoutPanel.Controls.Add(_okCancelTableLayoutPanel, 0, 2); + _overarchingTableLayoutPanel.Controls.Add(_previewGroupBox, 0, 1); + _overarchingTableLayoutPanel.Name = "overarchingTableLayoutPanel"; + _overarchingTableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Percent, 100F)); + _overarchingTableLayoutPanel.RowStyles.Add(new RowStyle()); + _overarchingTableLayoutPanel.RowStyles.Add(new RowStyle()); // DataGridViewCellStyleBuilder - // resources.ApplyResources(this, "$this"); AutoScaleDimensions = new Drawing.SizeF(6F, 13F); AutoScaleMode = AutoScaleMode.Font; - Controls.Add(overarchingTableLayoutPanel); + Controls.Add(_overarchingTableLayoutPanel); FormBorderStyle = FormBorderStyle.FixedDialog; HelpButton = true; MaximizeBox = false; @@ -299,21 +258,21 @@ private void InitializeComponent() Name = "DataGridViewCellStyleBuilder"; ShowIcon = false; ShowInTaskbar = false; - HelpButtonClicked += new System.ComponentModel.CancelEventHandler(DataGridViewCellStyleBuilder_HelpButtonClicked); - HelpRequested += new System.Windows.Forms.HelpEventHandler(DataGridViewCellStyleBuilder_HelpRequested); - Load += new System.EventHandler(DataGridViewCellStyleBuilder_Load); - sampleViewTableLayoutPanel.ResumeLayout(false); - sampleViewTableLayoutPanel.PerformLayout(); - sampleViewGridsTableLayoutPanel.ResumeLayout(false); - sampleViewGridsTableLayoutPanel.PerformLayout(); - ((ISupportInitialize)(sampleDataGridView)).EndInit(); - ((ISupportInitialize)(sampleDataGridViewSelected)).EndInit(); - okCancelTableLayoutPanel.ResumeLayout(false); - okCancelTableLayoutPanel.PerformLayout(); - previewGroupBox.ResumeLayout(false); - previewGroupBox.PerformLayout(); - overarchingTableLayoutPanel.ResumeLayout(false); - overarchingTableLayoutPanel.PerformLayout(); + HelpButtonClicked += new CancelEventHandler(DataGridViewCellStyleBuilder_HelpButtonClicked); + HelpRequested += new HelpEventHandler(DataGridViewCellStyleBuilder_HelpRequested); + Load += new EventHandler(DataGridViewCellStyleBuilder_Load); + _sampleViewTableLayoutPanel.ResumeLayout(false); + _sampleViewTableLayoutPanel.PerformLayout(); + _sampleViewGridsTableLayoutPanel.ResumeLayout(false); + _sampleViewGridsTableLayoutPanel.PerformLayout(); + ((ISupportInitialize)(_sampleDataGridView)).EndInit(); + ((ISupportInitialize)(_sampleDataGridViewSelected)).EndInit(); + _okCancelTableLayoutPanel.ResumeLayout(false); + _okCancelTableLayoutPanel.PerformLayout(); + _previewGroupBox.ResumeLayout(false); + _previewGroupBox.PerformLayout(); + _overarchingTableLayoutPanel.ResumeLayout(false); + _overarchingTableLayoutPanel.PerformLayout(); ResumeLayout(false); } #endregion @@ -345,8 +304,7 @@ private void DataGridViewCellStyleBuilder_HelpRequested(object sender, System.Wi private void DataGridViewCellStyleBuilder_HelpRequestHandled() { - IHelpService helpService = context.GetService(typeof(IHelpService)) as IHelpService; - if (helpService != null) + if (_context.GetService(typeof(IHelpService)) is IHelpService helpService) { helpService.ShowHelpFromKeyword("vs.CellStyleDialog"); } @@ -355,31 +313,28 @@ private void DataGridViewCellStyleBuilder_HelpRequestHandled() private void DataGridViewCellStyleBuilder_Load(object sender, System.EventArgs e) { // The cell inside the sampleDataGridView should not be selected. - sampleDataGridView.ClearSelection(); + _sampleDataGridView.ClearSelection(); - // make sure that the cell inside the sampleDataGridView and sampleDataGridViewSelected fill their - // respective dataGridView's - sampleDataGridView.Rows[0].Height = sampleDataGridView.Height; - sampleDataGridView.Columns[0].Width = sampleDataGridView.Width; + // make sure that the cell inside the sampleDataGridView and sampleDataGridViewSelected fill their respective dataGridView's + _sampleDataGridView.Rows[0].Height = _sampleDataGridView.Height; + _sampleDataGridView.Columns[0].Width = _sampleDataGridView.Width; - sampleDataGridViewSelected.Rows[0].Height = sampleDataGridViewSelected.Height; - sampleDataGridViewSelected.Columns[0].Width = sampleDataGridViewSelected.Width; + _sampleDataGridViewSelected.Rows[0].Height = _sampleDataGridViewSelected.Height; + _sampleDataGridViewSelected.Columns[0].Width = _sampleDataGridViewSelected.Width; - // sync the Layout event for both sample DataGridView's - // so that when the sample DataGridView's are laid out we know to change the size of their cells - sampleDataGridView.Layout += new System.Windows.Forms.LayoutEventHandler(sampleDataGridView_Layout); - sampleDataGridViewSelected.Layout += new System.Windows.Forms.LayoutEventHandler(sampleDataGridView_Layout); + // sync the Layout event for both sample DataGridView's so that when the sample DataGridView's are laid out we know to change the size of their cells + _sampleDataGridView.Layout += new System.Windows.Forms.LayoutEventHandler(sampleDataGridView_Layout); + _sampleDataGridViewSelected.Layout += new System.Windows.Forms.LayoutEventHandler(sampleDataGridView_Layout); } private void sampleDataGridView_CellStateChanged(object sender, System.Windows.Forms.DataGridViewCellStateChangedEventArgs e) { - Debug.Assert(e.Cell == sampleDataGridView.Rows[0].Cells[0], "the sample data grid view has only one cell"); - Debug.Assert(sender == sampleDataGridView, "did we forget to unhook notification"); + Debug.Assert(e.Cell == _sampleDataGridView.Rows[0].Cells[0], "the sample data grid view has only one cell"); + Debug.Assert(sender == _sampleDataGridView, "did we forget to unhook notification"); if ((e.StateChanged & DataGridViewElementStates.Selected) != 0 && (e.Cell.State & DataGridViewElementStates.Selected) != 0) { - // The cell inside the sample data grid view became selected. - // We don't want that to happen - sampleDataGridView.ClearSelection(); + // The cell inside the sample data grid view became selected. We don't want that to happen + _sampleDataGridView.ClearSelection(); } } @@ -392,15 +347,14 @@ private void sampleDataGridView_Layout(object sender, System.Windows.Forms.Layou private class DialogDataGridViewCell : DataGridViewTextBoxCell { - DialogDataGridViewCellAccessibleObject accObj = null; + DialogDataGridViewCellAccessibleObject _accObj = null; protected override AccessibleObject CreateAccessibilityInstance() { - if (accObj == null) + if (_accObj == null) { - accObj = new DialogDataGridViewCellAccessibleObject(this); + _accObj = new DialogDataGridViewCellAccessibleObject(this); } - - return accObj; + return _accObj; } private class DialogDataGridViewCellAccessibleObject : DataGridViewCell.DataGridViewCellAccessibleObject @@ -409,18 +363,11 @@ public DialogDataGridViewCellAccessibleObject(DataGridViewCell owner) : base(own { } - string name = ""; + string _name = ""; public override string Name { - get - { - return name; - } - set - { - name = value; - } - + get => _name; + set => _name = value; } } } diff --git a/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewCellStyleEditor.cs b/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewCellStyleEditor.cs index c5ed641f689..ac20c0c93a9 100644 --- a/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewCellStyleEditor.cs +++ b/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewCellStyleEditor.cs @@ -14,9 +14,9 @@ internal class DataGridViewCellStyleEditor : UITypeEditor private DataGridViewCellStyleBuilder builderDialog; - /// + /// /// 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) { @@ -42,14 +42,12 @@ public override object EditValue(ITypeDescriptorContext context, IServiceProvide builderDialog.Font = (Font)uiService.Styles["DialogFont"]; } - DataGridViewCellStyle dgvcs = value as DataGridViewCellStyle; - if (dgvcs != null) + if (value is DataGridViewCellStyle dgvcs) { builderDialog.CellStyle = dgvcs; } builderDialog.Context = context; - try { if (builderDialog.ShowDialog() == DialogResult.OK) @@ -63,13 +61,12 @@ public override object EditValue(ITypeDescriptorContext context, IServiceProvide } } } - 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.Modal; diff --git a/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewComponentPropertyGridSite.cs b/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewComponentPropertyGridSite.cs index 79172e66f42..991b718a8ec 100644 --- a/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewComponentPropertyGridSite.cs +++ b/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewComponentPropertyGridSite.cs @@ -9,45 +9,34 @@ namespace System.Windows.Forms.Design internal class DataGridViewComponentPropertyGridSite : ISite { - private IServiceProvider sp; - private IComponent comp; - private bool inGetService = false; + private readonly IServiceProvider _sp; + private readonly IComponent _comp; + private bool _inGetService = false; public DataGridViewComponentPropertyGridSite(IServiceProvider sp, IComponent comp) { - this.sp = sp; - this.comp = comp; + _sp = sp; + _comp = comp; } - /** The component sited by this component site. */ - /// - /// - /// When implemented by a class, gets the component associated with the . - /// - public IComponent Component { get { return comp; } } + /// + /// When implemented by a class, gets the component associated with the . + /// + public IComponent Component { get { return _comp; } } - /** The container in which the component is sited. */ - /// - /// - /// When implemented by a class, gets the container associated with the . - /// + /// + /// When implemented by a class, gets the container associated with the . + /// public IContainer Container { get { return null; } } - /** Indicates whether the component is in design mode. */ - /// - /// - /// When implemented by a class, determines whether the component is in design mode. - /// + /// + /// When implemented by a class, determines whether the component is in design mode. + /// public bool DesignMode { get { return false; } } - /** - * The name of the component. - */ - /// - /// - /// When implemented by a class, gets or sets the name of - /// the component associated with the . - /// + /// + /// When implemented by a class, gets or sets the name of the component associated with the . + /// public string Name { get { return null; } @@ -56,16 +45,16 @@ public string Name public object GetService(Type t) { - if (!inGetService && sp != null) + if (!_inGetService && _sp != null) { try { - inGetService = true; - return sp.GetService(t); + _inGetService = true; + return _sp.GetService(t); } finally { - inGetService = false; + _inGetService = false; } } return null; From 1d473a77e183f770f699eb6b436f6914c3850c77 Mon Sep 17 00:00:00 2001 From: Judit Varsanyi Rozsa Date: Tue, 12 Nov 2019 11:23:37 -0800 Subject: [PATCH 05/12] fixed version in SR.resx --- src/System.Windows.Forms.Design.Editors/src/Resources/SR.resx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/System.Windows.Forms.Design.Editors/src/Resources/SR.resx b/src/System.Windows.Forms.Design.Editors/src/Resources/SR.resx index c58675540ff..f29f24c5b81 100644 --- a/src/System.Windows.Forms.Design.Editors/src/Resources/SR.resx +++ b/src/System.Windows.Forms.Design.Editors/src/Resources/SR.resx @@ -53,10 +53,10 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Anchor Editor From 4a37cab8d359665ed24fb5cabb7a46ca56e6bcd2 Mon Sep 17 00:00:00 2001 From: Judit Varsanyi Rozsa Date: Tue, 12 Nov 2019 11:34:57 -0800 Subject: [PATCH 06/12] moved column header collection editor to a separate PR --- .../Design/ColumnHeaderCollectionEditor.cs | 71 ------------------- 1 file changed, 71 deletions(-) delete mode 100644 src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/ColumnHeaderCollectionEditor.cs diff --git a/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/ColumnHeaderCollectionEditor.cs b/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/ColumnHeaderCollectionEditor.cs deleted file mode 100644 index e047769ac70..00000000000 --- a/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/ColumnHeaderCollectionEditor.cs +++ /dev/null @@ -1,71 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System.ComponentModel; -using System.ComponentModel.Design; -using System.Diagnostics; - -namespace System.Windows.Forms.Design.Editors -{ - internal class ColumnHeaderCollectionEditor : CollectionEditor - { - /// - /// Initializes a new instance of the class. - /// - public ColumnHeaderCollectionEditor(Type type) : base(type) - { - } - - /// - /// Gets the help topic to display for the dialog help button or pressing F1. Override to display a different help topic. - /// - protected override string HelpTopic - { - get => "net.ComponentModel.ColumnHeaderCollectionEditor"; - } - - /// - /// Sets the specified collection to have the specified array of items. - /// - protected override object SetItems(object editValue, object[] value) - { - if (editValue is ListView.ColumnHeaderCollection list) - { - list.Clear(); - ColumnHeader[] colHeaders = new ColumnHeader[value.Length]; - Array.Copy(value, 0, colHeaders, 0, value.Length); - list.AddRange(colHeaders); - } - return editValue; - } - - /// - /// Removes the item from listview column header collection - /// - internal override void OnItemRemoving(object item) - { - if (!(Context.Instance is ListView listview)) - { - return; - } - - if (item is ColumnHeader column) - { - IComponentChangeService cs = GetService(typeof(IComponentChangeService)) as IComponentChangeService; - PropertyDescriptor itemsProp = null; - if (cs != null) - { - itemsProp = TypeDescriptor.GetProperties(Context.Instance)["Columns"]; - cs.OnComponentChanging(Context.Instance, itemsProp); - } - listview.Columns.Remove(column); - - if (cs != null && itemsProp != null) - { - cs.OnComponentChanged(Context.Instance, itemsProp, null, null); - } - } - } - } -} From 6e60e19ffb2366a5d2ef7ae9e884ba7b29dac037 Mon Sep 17 00:00:00 2001 From: Judit Varsanyi Rozsa Date: Tue, 12 Nov 2019 14:32:15 -0800 Subject: [PATCH 07/12] PR review fixes --- .../Design/DataGridViewCellStyleEditor.cs | 75 ++++++++----------- .../DataGridViewComponentPropertyGridSite.cs | 8 +- 2 files changed, 37 insertions(+), 46 deletions(-) diff --git a/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewCellStyleEditor.cs b/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewCellStyleEditor.cs index ac20c0c93a9..c2a7981fc0f 100644 --- a/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewCellStyleEditor.cs +++ b/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewCellStyleEditor.cs @@ -3,7 +3,6 @@ // See the LICENSE file in the project root for more information. using System.ComponentModel; -using System.Diagnostics; using System.Drawing; using System.Drawing.Design; @@ -11,65 +10,57 @@ namespace System.Windows.Forms.Design.Editors { internal class DataGridViewCellStyleEditor : UITypeEditor { - - private DataGridViewCellStyleBuilder builderDialog; + private DataGridViewCellStyleBuilder _builderDialog; /// - /// 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. + /// 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) { + if (provider == null) + { + throw new ArgumentNullException(nameof(provider)); + } - Debug.Assert(provider != null, "No service provider; we cannot edit the value"); - if (provider != null) + IWindowsFormsEditorService edSvc = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService)); + if (edSvc == null) { - IWindowsFormsEditorService edSvc = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService)); - IUIService uiService = (IUIService)provider.GetService(typeof(IUIService)); - IComponent comp = context.Instance as IComponent; + throw new ArgumentNullException(nameof(edSvc)); + } - Debug.Assert(edSvc != null, "No editor service; we cannot edit the value"); - if (edSvc != null) + IUIService uiService = (IUIService)provider.GetService(typeof(IUIService)); + IComponent comp = context.Instance as IComponent; + using (DpiHelper.EnterDpiAwarenessScope(DpiAwarenessContext.DPI_AWARENESS_CONTEXT_SYSTEM_AWARE)) + { + _builderDialog ??= new DataGridViewCellStyleBuilder(provider, comp); + if (uiService != null) { - using (DpiHelper.EnterDpiAwarenessScope(DpiAwarenessContext.DPI_AWARENESS_CONTEXT_SYSTEM_AWARE)) - { - if (builderDialog == null) - { - builderDialog = new DataGridViewCellStyleBuilder(provider, comp); - } - - if (uiService != null) - { - builderDialog.Font = (Font)uiService.Styles["DialogFont"]; - } + _builderDialog.Font = (Font)uiService.Styles["DialogFont"]; + } - if (value is DataGridViewCellStyle dgvcs) - { - builderDialog.CellStyle = dgvcs; - } + if (value is DataGridViewCellStyle dgvcs) + { + _builderDialog.CellStyle = dgvcs; + } - builderDialog.Context = context; - try - { - if (builderDialog.ShowDialog() == DialogResult.OK) - { - value = builderDialog.CellStyle; - } - } - finally - { - } + _builderDialog.Context = context; + try + { + if (_builderDialog.ShowDialog() == DialogResult.OK) + { + value = _builderDialog.CellStyle; } } + finally + { + } } return value; } /// - /// Retrieves the editing style of the Edit method. If the method is not supported, this will return None. + /// 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.Modal; - } + public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context) => UITypeEditorEditStyle.Modal; } } diff --git a/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewComponentPropertyGridSite.cs b/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewComponentPropertyGridSite.cs index 991b718a8ec..66ef02b56c2 100644 --- a/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewComponentPropertyGridSite.cs +++ b/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewComponentPropertyGridSite.cs @@ -22,24 +22,24 @@ public DataGridViewComponentPropertyGridSite(IServiceProvider sp, IComponent com /// /// When implemented by a class, gets the component associated with the . /// - public IComponent Component { get { return _comp; } } + public IComponent Component { get => _comp; } /// /// When implemented by a class, gets the container associated with the . /// - public IContainer Container { get { return null; } } + public IContainer Container { get => null; } /// /// When implemented by a class, determines whether the component is in design mode. /// - public bool DesignMode { get { return false; } } + public bool DesignMode { get => false; } /// /// When implemented by a class, gets or sets the name of the component associated with the . /// public string Name { - get { return null; } + get => null; set { } } From 1df1498bc3161ff3292b93753fbef758046a7601 Mon Sep 17 00:00:00 2001 From: Judit Varsanyi Rozsa Date: Tue, 12 Nov 2019 15:54:58 -0800 Subject: [PATCH 08/12] use auto property --- .../Forms/Design/DataGridViewComponentPropertyGridSite.cs | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewComponentPropertyGridSite.cs b/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewComponentPropertyGridSite.cs index 66ef02b56c2..ccf4d7a5a54 100644 --- a/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewComponentPropertyGridSite.cs +++ b/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewComponentPropertyGridSite.cs @@ -37,11 +37,7 @@ public DataGridViewComponentPropertyGridSite(IServiceProvider sp, IComponent com /// /// When implemented by a class, gets or sets the name of the component associated with the . /// - public string Name - { - get => null; - set { } - } + public string Name { get; set; } public object GetService(Type t) { From 9bf1b76a55b119d7be9f284f127e68662879ce88 Mon Sep 17 00:00:00 2001 From: Judit Varsanyi Rozsa Date: Wed, 13 Nov 2019 15:13:23 -0800 Subject: [PATCH 09/12] PR comments --- .../Design/DataGridViewCellStyleEditor.cs | 2 +- .../DataGridViewComponentPropertyGridSite.cs | 22 +++++++++---------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewCellStyleEditor.cs b/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewCellStyleEditor.cs index c2a7981fc0f..64005ed6f09 100644 --- a/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewCellStyleEditor.cs +++ b/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewCellStyleEditor.cs @@ -25,7 +25,7 @@ public override object EditValue(ITypeDescriptorContext context, IServiceProvide IWindowsFormsEditorService edSvc = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService)); if (edSvc == null) { - throw new ArgumentNullException(nameof(edSvc)); + throw new InvalidOperationException("Service provider couldn't fetch " + nameof(edSvc)); } IUIService uiService = (IUIService)provider.GetService(typeof(IUIService)); diff --git a/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewComponentPropertyGridSite.cs b/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewComponentPropertyGridSite.cs index ccf4d7a5a54..35ea7521f6c 100644 --- a/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewComponentPropertyGridSite.cs +++ b/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewComponentPropertyGridSite.cs @@ -41,19 +41,19 @@ public DataGridViewComponentPropertyGridSite(IServiceProvider sp, IComponent com public object GetService(Type t) { - if (!_inGetService && _sp != null) + if (_inGetService || _sp == null) { - try - { - _inGetService = true; - return _sp.GetService(t); - } - finally - { - _inGetService = false; - } + return null; + } + try + { + _inGetService = true; + return _sp.GetService(t); + } + finally + { + _inGetService = false; } - return null; } } } From f4d3ec1319d091e43466111f38f101b1477f2c6f Mon Sep 17 00:00:00 2001 From: Judit Varsanyi Rozsa Date: Wed, 13 Nov 2019 16:31:16 -0800 Subject: [PATCH 10/12] add unit test to data grid view cell style editor --- .../DataGridViewCellStyleEditorTests.cs | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 src/System.Windows.Forms.Design.Editors/tests/UnitTests/System/Windows/Forms/Design/DataGridViewCellStyleEditorTests.cs diff --git a/src/System.Windows.Forms.Design.Editors/tests/UnitTests/System/Windows/Forms/Design/DataGridViewCellStyleEditorTests.cs b/src/System.Windows.Forms.Design.Editors/tests/UnitTests/System/Windows/Forms/Design/DataGridViewCellStyleEditorTests.cs new file mode 100644 index 00000000000..222cfd05f86 --- /dev/null +++ b/src/System.Windows.Forms.Design.Editors/tests/UnitTests/System/Windows/Forms/Design/DataGridViewCellStyleEditorTests.cs @@ -0,0 +1,27 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Drawing.Design; +using System.Windows.Forms.Design.Editors; +using Xunit; + +namespace System.Windows.Forms.Design.Tests +{ + public class DataGridViewCellStyleEditorTest + { + [Fact] + public void DataGridViewCellStyleEditor_Ctor_Default() + { + var editor = new DataGridViewCellStyleEditor(); + Assert.False(editor.IsDropDownResizable); + } + + [Fact] + public void DataGridViewCellStyleEditor_GetEditStyle_ReturnsModal() + { + var editor = new DataGridViewCellStyleEditor(); + Assert.Equal(UITypeEditorEditStyle.Modal, editor.GetEditStyle(null)); + } + } +} From 15561ea1b6fc47bef6b743db70727cf21b08ea00 Mon Sep 17 00:00:00 2001 From: Judit Varsanyi Rozsa Date: Thu, 14 Nov 2019 11:48:05 -0800 Subject: [PATCH 11/12] added type forwarding for DataGridViewCellStyleEditor --- src/System.Design/src/System.Design.Forwards.cs | 1 + .../System/Windows/Forms/Design/DataGridViewCellStyleEditor.cs | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/System.Design/src/System.Design.Forwards.cs b/src/System.Design/src/System.Design.Forwards.cs index 22e156a61d3..e8a5e04c6c6 100644 --- a/src/System.Design/src/System.Design.Forwards.cs +++ b/src/System.Design/src/System.Design.Forwards.cs @@ -5,6 +5,7 @@ using System.Runtime.CompilerServices; [assembly: TypeForwardedTo(typeof(System.Windows.Forms.Design.DataMemberFieldConverter))] +[assembly: TypeForwardedTo(typeof(System.Windows.Forms.Design.DataGridViewCellStyleEditor))] [assembly: TypeForwardedTo(typeof(System.Windows.Forms.Design.FormatStringEditor))] [assembly: TypeForwardedTo(typeof(System.Windows.Forms.Design.HelpNamespaceEditor))] [assembly: TypeForwardedTo(typeof(System.Windows.Forms.Design.ImageCollectionEditor))] diff --git a/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewCellStyleEditor.cs b/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewCellStyleEditor.cs index 64005ed6f09..70c27c9da90 100644 --- a/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewCellStyleEditor.cs +++ b/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewCellStyleEditor.cs @@ -6,7 +6,7 @@ using System.Drawing; using System.Drawing.Design; -namespace System.Windows.Forms.Design.Editors +namespace System.Windows.Forms.Design { internal class DataGridViewCellStyleEditor : UITypeEditor { From 67307db4b269e4d35cfeb64bb0d435bfa429da43 Mon Sep 17 00:00:00 2001 From: Judit Varsanyi Rozsa Date: Mon, 18 Nov 2019 14:00:39 -0800 Subject: [PATCH 12/12] remove unnecessary try block --- .../Forms/Design/DataGridViewCellStyleEditor.cs | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewCellStyleEditor.cs b/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewCellStyleEditor.cs index 70c27c9da90..e836e2da9be 100644 --- a/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewCellStyleEditor.cs +++ b/src/System.Windows.Forms.Design.Editors/src/System/Windows/Forms/Design/DataGridViewCellStyleEditor.cs @@ -44,15 +44,9 @@ public override object EditValue(ITypeDescriptorContext context, IServiceProvide } _builderDialog.Context = context; - try - { - if (_builderDialog.ShowDialog() == DialogResult.OK) - { - value = _builderDialog.CellStyle; - } - } - finally + if (_builderDialog.ShowDialog() == DialogResult.OK) { + value = _builderDialog.CellStyle; } } return value;