From e6f5d7be1331e78fee7f70ce0646bed0d581f1aa Mon Sep 17 00:00:00 2001 From: Rabina Date: Tue, 26 May 2026 16:42:22 +0530 Subject: [PATCH 1/2] Fix_Issue_3152: Disable Up and Down buttons correctly in CollectionEditor form --- .../CollectionEditor.CollectionEditorCollectionForm.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/System.Windows.Forms.Design/src/System/ComponentModel/Design/CollectionEditor.CollectionEditorCollectionForm.cs b/src/System.Windows.Forms.Design/src/System/ComponentModel/Design/CollectionEditor.CollectionEditorCollectionForm.cs index 3ff13b95a9d..c3ee040e4c8 100644 --- a/src/System.Windows.Forms.Design/src/System/ComponentModel/Design/CollectionEditor.CollectionEditorCollectionForm.cs +++ b/src/System.Windows.Forms.Design/src/System/ComponentModel/Design/CollectionEditor.CollectionEditorCollectionForm.cs @@ -1037,9 +1037,11 @@ private void UpdateEnabled() } bool editEnabled = (_listBox.SelectedItem is not null) && CollectionEditable; + int count = _listBox.Items.Count; + int selectedIndex = _listBox.SelectedIndex; _removeButton.Enabled = editEnabled && AllowRemoveInstance(((ListItem)_listBox.SelectedItem!).Value); - _upButton.Enabled = editEnabled && _listBox.Items.Count > 1; - _downButton.Enabled = editEnabled && _listBox.Items.Count > 1; + _upButton.Enabled = editEnabled && count > 1 && selectedIndex > 0; + _downButton.Enabled = editEnabled && count > 1 && selectedIndex < count - 1; _propertyGrid.Enabled = editEnabled; _addButton.Enabled = CollectionEditable; From 267e52d34c57fb1d88e52c66105f33d0d3a59763 Mon Sep 17 00:00:00 2001 From: RabinaMurugan Date: Tue, 23 Jun 2026 12:49:00 +0530 Subject: [PATCH 2/2] Fix_Issue_3152 - Added testcases for the CollectionEditor Form's Up and Down button's state issue --- .../Design/CollectionEditorTests.cs | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/System.Windows.Forms.Design/tests/UnitTests/System/ComponentModel/Design/CollectionEditorTests.cs b/src/System.Windows.Forms.Design/tests/UnitTests/System/ComponentModel/Design/CollectionEditorTests.cs index 52fba6a876b..64682b0bcd6 100644 --- a/src/System.Windows.Forms.Design/tests/UnitTests/System/ComponentModel/Design/CollectionEditorTests.cs +++ b/src/System.Windows.Forms.Design/tests/UnitTests/System/ComponentModel/Design/CollectionEditorTests.cs @@ -15,6 +15,41 @@ namespace System.ComponentModel.Design.Tests; public class CollectionEditorTests { + [Fact] + public void CollectionEditor_CollectionForm_UpdateEnabled_FirstMiddleLastNone_SetsUpDownExpected() + { + SubCollectionEditor editor = new(typeof(List)); + using Form form = editor.CreateCollectionForm(); + + dynamic a = form.TestAccessor.Dynamic; + a.AddItems(new object[] { 1, 2, 3 }); + + ListBox listBox = (ListBox)a._listBox; + Button up = (Button)a._upButton; + Button down = (Button)a._downButton; + + up.Enabled.Should().BeTrue(); + down.Enabled.Should().BeFalse(); + + listBox.SelectedIndex = 0; + up.Enabled.Should().BeFalse(); + down.Enabled.Should().BeTrue(); + + listBox.ClearSelected(); + listBox.SelectedIndex = 1; + up.Enabled.Should().BeTrue(); + down.Enabled.Should().BeTrue(); + + listBox.ClearSelected(); + up.Enabled.Should().BeFalse(); + down.Enabled.Should().BeFalse(); + + listBox.Items.Clear(); + a.AddItems(new object[] { 42 }); + up.Enabled.Should().BeFalse(); + down.Enabled.Should().BeFalse(); + } + [Theory] [InlineData(typeof(object), typeof(object))] [InlineData(typeof(string), typeof(object))]