[C# Helper]
Index Books FAQ Contact About Rod
[Beginning Database Design Solutions, Second Edition]

[Beginning Software Engineering, Second Edition]

[Essential Algorithms, Second Edition]

[The Modern C# Challenge]

[WPF 3d, Three-Dimensional Graphics with WPF and C#]

[The C# Helper Top 100]

[Interview Puzzles Dissected]

[C# 24-Hour Trainer]

[C# 5.0 Programmer's Reference]

[MCSD Certification Toolkit (Exam 70-483): Programming in C#]

Title: Make a context-sensitive AcceptButton in C#

[Make a context-sensitive AcceptButton in C#]

You've probably seen applications, often on web sites, where the action that a form takes when you press Enter depends on the control that has focus at the time. For example, many login pages have a place for you to enter your user name and password if you have an account, or to enter other information if you want to create an account. If you type your user name and password and press Enter, you go to a login success or failure page. If you enter your name in the new account area, you go to a new account page.

A Windows Form's AcceptButton property determines which button is triggered when you press Enter, but a form can have only one AcceptButton. This example uses the following code to change the AcceptButton depending on which control has the focus.

private void createGroupBox_Enter(object sender, EventArgs e) { this.AcceptButton = createButton; } private void loadTableGroupBox_Enter(object sender, EventArgs e) { this.AcceptButton = makeItemsButton; } private void createFindGroupBox_Enter(object sender, EventArgs e) { this.AcceptButton = findButton; }

When focus enters one of the form's GroupBox controls, the corresponding Enter event handler sets the form's AcceptButton property to whichever button is appropriate for that GroupBox. For example, when focus is in the Load Table GroupBox, the Enter key fires the Make Items button. When focus is in the Create/Find GroupBox, the Enter key fires the Find button.

[Essential Algorithms] If you look very closely at the picture, you'll see that the form automatically highlights the AcceptButton by giving it a blue outline. (In Windows 11 with this set of window settings, anyway.) That means an alert user can tell which button is the AcceptButton at any given moment.

I wouldn't necessarily use this technique for every program, but it can make the user's life easier if they must perform a certain sequence of events many times as in this example where the user creates a table, populates it, and then searches for items in it.

Note: This program is taken from an algorithms book I wrote. The naming conventions don't follow my usual style because publishers prefer the style that Microsoft uses, which I find harder to read. For more information on algorithms, see my book Essential Algorithms: A Practical Approach to Computer Algorithms

Download the example to experiment with it and to see additional details.

© 2009-2023 Rocky Mountain Computer Consulting, Inc. All rights reserved.