| File: System\Windows\Forms\Design\NavigationalTableLayoutPanel.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. namespace System.Windows.Forms.Design; internal partial class StyleCollectionEditor { protected class NavigationalTableLayoutPanel : TableLayoutPanel { private List<RadioButton> RadioButtons { get { List<RadioButton> radioButtons = []; foreach (Control control in Controls) { RadioButton radioButton = (RadioButton)control; if (radioButton is not null) { radioButtons.Add(radioButton); } } return radioButtons; } } protected override bool ProcessDialogKey(Keys keyData) { bool down = keyData == Keys.Down; bool up = keyData == Keys.Up; if (down || up) { List<RadioButton> radioButtons = RadioButtons; for (int i = 0; i < radioButtons.Count; i++) { RadioButton radioButton = radioButtons[i]; if (radioButton.Focused) { int focusIndex; if (down) { focusIndex = i == RadioButtons.Count - 1 ? 0 : i + 1; } else { focusIndex = i == 0 ? RadioButtons.Count - 1 : i - 1; } radioButtons[focusIndex].Focus(); return true; } } } return base.ProcessDialogKey(keyData); } } }