Selection of text in textbox
-
In my project, I have created custom text box deriving it from text box control. I would like to select the text present when focus is received in the custom text box. Focus can be received in custom control either pressing tab or clicking into the textbox control. In my custom control I have overridden the getfocus behaviour and placed following code : protected override void OnGotFocus(EventArgs e) { if (!ReadOnly) { BackColor = _backHighLightColor; // just to change back color // to selected complete text in the textbox when focus received SelectAll(); } } With above line of code, text in the custom textbox control gets selected when I'm getting the foucs into the control using the tab but doesn't select the text when i click into the custom text box. I could write the above code in the click event of custom control by overriding the base implementation for click but i don't want to do that as click event of my custom control is intended to do some other functionality as well. Can anyone help me with this? regards, KC
-
In my project, I have created custom text box deriving it from text box control. I would like to select the text present when focus is received in the custom text box. Focus can be received in custom control either pressing tab or clicking into the textbox control. In my custom control I have overridden the getfocus behaviour and placed following code : protected override void OnGotFocus(EventArgs e) { if (!ReadOnly) { BackColor = _backHighLightColor; // just to change back color // to selected complete text in the textbox when focus received SelectAll(); } } With above line of code, text in the custom textbox control gets selected when I'm getting the foucs into the control using the tab but doesn't select the text when i click into the custom text box. I could write the above code in the click event of custom control by overriding the base implementation for click but i don't want to do that as click event of my custom control is intended to do some other functionality as well. Can anyone help me with this? regards, KC
Hi, KC.
KrunalC wrote:
I have overridden the getfocus behaviour
It's better to override OnEnter() method because you have a side effect with your code in OnGotFocus() (1. enter some text into your textbox; 2. go to an another form 3; go back to your form. After this your text will be fully selected. It's not a correct behaviour (although IE uses it in the address bar)).
KrunalC wrote:
I could write the above code in the click event of custom control by overriding the base implementation for click but i don't want to do that
I think you have to do that. But override OnMouseDown() instead of OnClick(). It will be more common behaviour. And you'll have to add some logic there to prevent selection when control already has focus.
-
Hi, KC.
KrunalC wrote:
I have overridden the getfocus behaviour
It's better to override OnEnter() method because you have a side effect with your code in OnGotFocus() (1. enter some text into your textbox; 2. go to an another form 3; go back to your form. After this your text will be fully selected. It's not a correct behaviour (although IE uses it in the address bar)).
KrunalC wrote:
I could write the above code in the click event of custom control by overriding the base implementation for click but i don't want to do that
I think you have to do that. But override OnMouseDown() instead of OnClick(). It will be more common behaviour. And you'll have to add some logic there to prevent selection when control already has focus.
Andrew, Thanks for your reply. I have gone through your reply but I'm afraid it will not serve the purpose for me. I got your argument on why I should override OnEnter() rather than OnGotFocus(). But still I will have to override the Click or Mousedown. Basically I want to avoid this. Also I would like to know why such behaviour is there. Why focus i received by clicking the control not giving the expected behaviour as got foucs. I would appreciate if someone can explain me the behaviour i.e. what is the difference when focus is received by pressing the tab key or when focus is received by clicking into the control. Thanks, KC
-
Andrew, Thanks for your reply. I have gone through your reply but I'm afraid it will not serve the purpose for me. I got your argument on why I should override OnEnter() rather than OnGotFocus(). But still I will have to override the Click or Mousedown. Basically I want to avoid this. Also I would like to know why such behaviour is there. Why focus i received by clicking the control not giving the expected behaviour as got foucs. I would appreciate if someone can explain me the behaviour i.e. what is the difference when focus is received by pressing the tab key or when focus is received by clicking into the control. Thanks, KC
I think the difference between tab-focus and mouseclick-focus is: 1. When control receives focus by pressing tab the only one action occurs -- receiving focus. At this moment you select all the text and cursor automatically goes to the end of the text. 2. When control receives focus by clicking into the control there are two actions: At first you have behaviour as described at 1. But then control must move cursor to the position where you clicked within the control. And this movement clears the selection. (It looks like you select control with tab and then press arrow key to move cursor within the control.) I don't think you can prevent this behaviour for the common winform textbox without overriding mouse events.
-
I think the difference between tab-focus and mouseclick-focus is: 1. When control receives focus by pressing tab the only one action occurs -- receiving focus. At this moment you select all the text and cursor automatically goes to the end of the text. 2. When control receives focus by clicking into the control there are two actions: At first you have behaviour as described at 1. But then control must move cursor to the position where you clicked within the control. And this movement clears the selection. (It looks like you select control with tab and then press arrow key to move cursor within the control.) I don't think you can prevent this behaviour for the common winform textbox without overriding mouse events.
Andrew, I'm getting what you are saying. I searched the web for this problem and my finding is also in line with what you have said in your reply. I think I will not be able to get the desired behaviour without overriding the mouseevent or click event. Thanks a lot for replying my question. regards, KC