How to select a button as default button of the form - c#

I have a form that takes user input and then let the user get connected to the SQL-Server.
This is happening on Button.Click. But where can I set the property Default button so that when the user clicks Enter it does the work of that button.

It is called AcceptButton now on the form; set that to the button that will be the default button.
Refer to Form.AcceptButton Property

I think you want the "AcceptButton" property at the FORM level... That will expose a combobox of available controls on your form, then select your "button" you want to use as the "Default" button on enter.

In addition to Form.AcceptButton property the "OK" button must have the TabOrder property set to 0 and all other controls within the form should have a TabOrder >0.
This can be done using a form resouce contruction kit or by code eg.
buttonOK.TabOrder = 0;

I have noticed severally how there is a mix up when it comes to an active button and an accept button. I just came out of it. So, I just thought I add a little option to the answers already given. Obviously, the best answer is;
this.AcceptButton = AcceptButton;
However, if you wish to have the button as an active control, this is what you do;
this.ActiveControl = OkButton;
details: https://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.containercontrol.activecontrol?view=netcore-3.1
I hope it is helpful to anyone searching.

Related

ToolStripButton have different behavior on showing Modal Less Dialog

I have a main window and a toolstrip on it with different command buttons. In these commands, I've a 'Print' button too (See Below). When I click on 'Print' button , I need to show sub-form as Modal Less Dialog. Because, I've few option on sub-form. If user select them then he/she can interact with Main Form too.
Meanwhile, on show() method I disable all controls on Main Form (see below) as it will be done if I use ShowDialog() method to show sub-form. When I click the Print Button, it's color changed which shows it is focused/selected.
On click sub-form is show like below pic.
Logically, it should return to previous mode when I close sub-form. But, even sub-form is showing... that 'Print' button on Main-Form is still focused/selected. When I close the sub-form, that 'Print' Button still focused/selected like below.
What Event/ Property needs to be changed to make this 'Print' Button to show like as it is in initial state.
I've tried Invalidate(), change BackColor but didn't meet the requirement yet. Any Guidelines ?
Set the CheckOnClick property of your button to false if you don't want it to appear "selected" at all, otherwise toggle the CheckState property on the button when the subform is closed.
Well, Selected Property in ToolStripButton is read only. Anyone, needs to clear the selection of toolstrip buttons can use below method which is invoked via reflections.
MethodInfo method = typeof(ToolStrip).GetMethod("ClearAllSelections", BindingFlags.NonPublic | BindingFlags.Instance);
method.Invoke(yourToolStripName, null);
This comes from : How to Deselect ToolStripItems
Happy Programming.

Where does tab goes?

I am working on winform project. At runtime when I am moving through different controls through tab key ; after one button my tab disappears for 2 clicks. I tried all things to fix this. I set tabstop=false for all contols in winform but still I am getting same problem.
Then I decided to add following code:
Control nextControl = this.GetNextControl(this.guipnlReportPatientMeasurementDetails.Controls[10], true);
where GetNextControl property gets the name of the control where my control will go after pressing tab key and Controls[10] is the button. So where should I place above piece of code so that I would get the name of next control. Should it be in button_click event or somewhere else ?
Guys please suggest.
You should set TabIndex property for each control according to the Tab order you want to impose (you can set it through designer).
Set TabStop = false only for those controls you want to exclude from Tab selection.
There's also a useful button that shows TabIndexes on the form:
You are digging yourself a hole. Find out what the real problem is, there's some kind of control that is either off the window or doesn't properly indicate the focus. If you have no clue what control that might be then add a timer and a label. Set the timer's Enabled property to True, Interval to 200. Write the Tick event like this:
private void timer1_Tick(object sender, EventArgs e) {
if (this.ActiveControl == null) label1.Text = "No control?";
else label1.Text = this.ActiveControl.Name;
}
That tells you where the tab goes.
I would first try to fix the tab order on the window before resolving to using this code. Did you do that?

How do I make a button on a form behave like a button on a toolStrip? VS2008

How do I make a button on a form behave like a button on a toolStrip?
I want a menu-type list to come down. I tried using a toolStripContainer but it is very hard to manipulate to get it to behave as just one button.
Is there an easier way than just putting a toolStrip with one button in a toolStripContainer?
Thanks.
Forget the ToolStripContainer, just use a ToolStrip (with 1 button).
set
toolStrip1.Dock = DockStyle.None;
toolStrip1.AutoSize = true

Suppress Automatic Textbox Selection on Windows Forms Form.Show()

I have an application where I am trying to mimic the "soft description" textboxes like those found for the tags and title locations on this site.
The way I've done this is essentially to create my textbox, and depending on what happens when the mouse pointer enters or leaves the control, it updates the content of the textbox to get the effect.
The problem is what when my form is first shown, the mouse cursor immediately jumps into the first textbox, which removes the title telling the user what the textbox is for.
If I turn off AcceptTab on the textbox, then everything works as expected, but the user loses the ability to tab into the textbox.
Is there a way to turn off this automatic selection of the textbox?
Could you this.Focus() on the form itself, or on some label control?
Bit late but a perfect solution is to select the form on load of form.
Adding this line to the constructor will give the expecting result.
this.Select();
But while using multi thread controls like OpenFileDialog if u want to unfocus/deselect text-box this.Select() was not working so I selected a button in the form using.
button1.Select();
The TabIndex property controls what order things will tab in, and on load, focus goes to the first control (ordered by TabIndex) that has AcceptTab as true. You can change the ordering so that the control that you want the user focus to start in is lowest (and have tabs work cycle through controls as you'd expect).
Alternatively, as Jason suggested, you could simply call Focus() on whatever control or the form itself in the FormLoad event.
I used a variant on Jason's technique. First, I created a dummy textbox with tabindex 0. That way, when the form is shown, that textbox will be selected. Next, I made the dummy textbox have zero width, so that it has no visible component.
However, once the form is loaded, I don't want the user to be able to tab over to the "nonexistant" textbox. Therefore, I added these two bits:
//These functions prevent the textboxes from being implicitly selected.
private void dummyBox_Leave(object sender, EventArgs e)
{
dummyBox.TabStop = false;
}
private void Main_Enter(object sender, EventArgs e)
{
dummyBox.TabStop = true;
dummyBox.Select();
}
Where Main is the name of my form.
Hope this helps someone.
Billy3

How can I trigger the default button on a form without clicking it (winforms)?

I have two text boxes. one for login id and another is for password. and there is one button (submit). I need an event that takes the values of login id and password. I.e, without clicking the mouse I need to invoke this event(just by hitting 'enter' on keyboard). can anybody help me!
thanx in advance.
srini.
Set the button to be the accept button on the form. You can do this by setting the forms "AcceptButton" property to be the button you want to trigger. This will make an enter key press trigger the button.
Simon P Stevens gave you the most adequate answer.
I would just add that you also have the possibility to set a form's CancelButton on which a click event would be triggered when you press the escape ESC key.
Quick summary
Enter --> AcceptButton
Esc --> CancelButton
use
buttonName.PerformClick();
If you don't want the button to be the default you can hook both TextBoxes KeyPress events to same handler then check if Enter was pressed using KeyEventArgs.KeyCode.
If you need to be able to navigate the form without the mouse, you'll want to make sure your tab stops are set correctly. I would set Login Id as the first, password as the second, and your submit button as the third. Then the user can navigate easily among them. IIRC, the default behavior of buttons is to fire off the On_Click event if the Enter key is pressed while the button has focus.

Categories