Jump to content
Xtreme .Net Talk

Recommended Posts

Posted

I'm creating an autotext facility in a richtextbox (like in Word where entries like "Yours faithfully" are suggested with a tooltip). If the user clicks away from the richtextbox then then the autotext suggestion should vanish. But this is easier said than done. The richtextbox's leave and lost focus events don't occur if the user clicks on the parent form for instance. I can approach the problem by capturing the mouse as follows:

 

   Private Sub RichTextBox1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles RichTextBox1.KeyUp
       Me.RichTextBox1.Capture = True
       Me.RichTextBox1.Cursor = Cursors.Default   'I'm sure this line shouldn't be necessary, but without it the cursor disappears!
   End Sub

 

but then initial clicks on buttons etc. are not recognised, which isn't very good. I can't believe that something that should be so simple is so problematic. Any suggestions?

  • 4 weeks later...
Posted
I'm creating an autotext facility in a richtextbox (like in Word where entries like "Yours faithfully" are suggested with a tooltip). If the user clicks away from the richtextbox then then the autotext suggestion should vanish. But this is easier said than done. The richtextbox's leave and lost focus events don't occur if the user clicks on the parent form for instance. I can approach the problem by capturing the mouse as follows:

 

   Private Sub RichTextBox1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles RichTextBox1.KeyUp
       Me.RichTextBox1.Capture = True
       Me.RichTextBox1.Cursor = Cursors.Default   'I'm sure this line shouldn't be necessary, but without it the cursor disappears!
   End Sub

 

but then initial clicks on buttons etc. are not recognised, which isn't very good. I can't believe that something that should be so simple is so problematic. Any suggestions?

try mouseevents and keydown events

Posted
try mouseevents and keydown events

Of what? It would be a bit excessive to have to handle the mousedown event of every control in my application.

Posted

check to see if the procedure is firing. Generally you only want to do something on a mouseup if you want to give someone a way out.

 

like "oh, I didn't mean to click that button, I'll keep the mouse pressed down and move it off the button"

 

You want this to happen on the textbox mouse down event it seems. Check that the procedure is firing and your tooltip isn't stealing/preventing it from firing.

Posted
check to see if the procedure is firing. Generally you only want to do something on a mouseup if you want to give someone a way out.

 

like "oh, I didn't mean to click that button, I'll keep the mouse pressed down and move it off the button"

 

You want this to happen on the textbox mouse down event it seems. Check that the procedure is firing and your tooltip isn't stealing/preventing it from firing.

 

Yes, I do want this to happen on the textbox mousedown event. And yes, the tooltip is stealing/preventing it from firing. And the tooltip has no mousedown event of its own. So I'm still looking at capturing the mouse to force the textbox's mousedown event to occur.

Posted
Hmm, then I'd say you would have to do a form mousedown event (or maybe a mouseover/mousein event for the textbox) and calculate if you're in the boundries of the textbox.
Posted
Hmm' date=' then I'd say you would have to do a form mousedown event (or maybe a mouseover/mousein event for the textbox) and calculate if you're in the boundries of the textbox.[/quote']

 

If the mouse goes down on a control in the form this won't trigger the form's mousedown event. There are dozens of controls in the form for me to worry about. OK, I could do some sort of iterative loop to add handlers for mousedown events of all controls in the form, but it's a bit of a hassle for something so small. I don't want anything to happen in response to the mousepointer going into or out of the textbox, so I don't see that events related to that will help. I still think that capturing the mouse is the best way.

Posted
Hmm, I was thinking of triggering a boolean on in in/out which would negate calculations on a Form MouseDown Event, but if the Forms MouseDown event isn't happening, then that doesn't help any. Right now I'm neck deep in refining some custom controls, so I can't really play around with the code and test things out, but those were my ideas.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...