Triggering event in C#.NET Form by tabbing into field - c#

I am designing a form using C#.NET. Whenever a user selects a text field to fill out an event triggers that shows a picture corresponding to the field they are filling out. However, some users like to use the tab key to move through the form. When tabbing through the text fields, the event is not triggered and the picture does not show up. I need to know how to get .NET to trigger an event when a user uses the tab key to move into a field.

Any event with the word "Click" in it will generally only be fired by a mouse action which is why it is not being fired by the user using the tab key.
The Enter or GotFocus event will be fired by both the mouse and the keyboard when the cursor enters the control. Just create the _Enter event for your textbox and move your code into it.
If you want to remove the image when the textbox loses the cursor just use the _Leave event.

Related

WinForms txtTextbox_MouseEnter firing for all textboxes on form

I have a form with five textboxes. On a button click event I check if any of the textboxes are empty and if so, the empty textboxes have the background color set to LightPink.
I want to set the background color back to the default when the user enters the textbox to enter a value. I tried txtTextbox_MouseEnter to do that but the event is firing when other textboxes get focus with a mouse click. Oddly, the txtTextBox_MouseEnter event doesn't always fire when any textbox is clicked on - just sometimes - can't seem to determine a pattern in that behavior.
Why is this happening and what's the correct way to accomplish my goal?

Don't have Click event in TextBox in WPF C#

I just want to add simple thing, wherever i click on TextBox I want to delete text that is inside. The thing is I DON'T have in list of events, event called Click.. Is this even possible? Or just I need to install some add on. Buttons are fine, they have Click event.
MouseButtonLeftUp would work if you only are concerned with mouse clicks. With that said, what if someone tabs into the box or focus is entered by other means?
At that point you may want to look at the GotFocus event. Any time the TextBox receives focus, you can handle the event.
TextBox has events called MouseLeftButtonUp and MouseLeftButtonDown, you can use them.

WinForms Button Click event and similar events depend on focus

I have the next situation:
there is a client app with a Form
the Form contains a few TabControl's
there are different controls on TabPage's of TabControl's
when the user clicks on any control, I need to activate the TabPage that is a parent of a control. For that I use a TabPage Enter event
when the TabPage gets activated, I need to make request to the server app, and I put focus to a hidden TextBox to disable UI
The problem is, when I click on a Button on another TabPage, in TabPage.Enter event handler I take focus to my hidden TextBox, and it seems like Button click event doesn't have enough time to be processed. When I put timer and handle TabPage.Enter event after 100 ms, the Button click event seems to be fired well. Same thing happens to all the controls: CheckBox doesn't get checked, RadioButton too. I wouldn't like to use timer, as that is not a stable solution.
Any ideas how could I make TabPage to process all mouse events before I take focus to hidden TextBox? I tried to use Application.DoEvents(), but that didn't help.
You are using a wrong event for a wrong control for what you are trying to do.
Enter event for TabPage is going to be fired when that page becomes an active control of the current form which might not happen under certain conditions. Instead, you need to use Selecting or Selected event of TabControl, depending on whether you want to cancel switching to a different tab or not (see TabControlCancelEventArgs parameter of Selecting event). In your case, Selecting event would be more appropriate since it won't allow switching to a selected tab until event is complete (unless you're doing an asynchronous request to the server). Additionally, you may no longer need to use the hidden TextBox.
UPDATE
Regarding comments to OP, when you have 2 (or more) TabControls on a form and you want to get notified when you press a button in any tab of a different TabControl, you can use Enter event for TabControl. Use a global variable to store which TabControl was activated in the Enter event and then send server request for a currently active tab of that activate TabControl.
If this doesn't work for your scenario, then you need to carefully examine your workflow and see if it can be improved in relation to what you want to accomplish.

What is the property that says a button was selected in c#?

i've been searching on internet for the property that says that a normal button was selected or not, i think there must be one because when you click a button, it turns light blue, regardless the mouse is over it or not, and when you click another button, the previous button changes back to normal and the new clicked button is set light blue.
I need it to know which button was just selected and draw a "resizing" square on it, and it gotta last as long as the button remains as the "selected one".
thanks in advance.
What you are looking for is the Focused property. For actually any Control it returns, whether it has input focus or not (so e.g. hitting Enter will cause the button to be clicked as well). Since it sounds like you want to be notified whenever that property changes, you should use the GotFocus and LostFocus events.
You can give a Control focus programmatically by calling Focus.
you can do two things,
you can do it with the events: mouseEnter and MouseLeave,
this events launches when the mouse enters or leaves the visible control area,
also the focused(boolean) property gets and sets the "selected" element
one solution could be to:
private void onElementMousenter(blablabla,sender e);
{
e.Focused=true;
}
and assign the mouseEnter events in all controls to this one so the last element will be the "selected one" until you select another

How Enter key behaves for a textbox in the IWindowsFormsEditorService.DropDownControl(userControl)

I have a custom control with a property Value.
The property grid displays the editor in the dropdown style, using the IWindowsFormsEditorService.DropDownControl(userControl) method within the
MyUITypeEditor.EditValue(...).
The drop down editor has a text box that displays the value.
The entered text is validated in the event handler for Validating event. With this, when enter some text and press Enter key, the dropdown does not close down.
However, if along with Validaing event, I hook onto TextChanged event, then when I hit enter the dropdown closes.
In the editor code, i dont have any code to handle the Enter key.
I am wondering how the DropDownControl(...) internally works by handling the Enter key.
Any explanation is most welcome.
Thanks

Categories

Resources