Home All Groups Group Topic Archive Search About

GotFocus versus PreviewKeyDown or Other

Author
28 Dec 2006 12:42 AM
Steve
I want to save the current value of the textbox before the user changes it -
in case I want to restore it.  Currently, I'm setting a local string
variable equal to the text value in GotFocus.  Should I be doing this in a
different event, and is there a industry-standard approach to doing this?

Thanks

Steve

Author
28 Dec 2006 8:28 AM
Cor Ligthert [MVP]
Steve,

For that you have first to tell what is a change.
Leaving the textbox or every character.

Cor

Show quoteHide quote
"Steve" <s.ar***@comcast.net> schreef in bericht
news:uiLVdjhKHHA.4848@TK2MSFTNGP04.phx.gbl...
>I want to save the current value of the textbox before the user changes
>it -
> in case I want to restore it.  Currently, I'm setting a local string
> variable equal to the text value in GotFocus.  Should I be doing this in a
> different event, and is there a industry-standard approach to doing this?
>
> Thanks
>
> Steve
>
>
Author
31 Dec 2006 2:21 PM
Shane
I've done something like this by subclassing the textbox control and
adding a property to store the text on Enter. I'm pulling some text
from an old post, so it's a bit more information than you requested.
You don't need the "ValueChanged" event for your question.

Here's the "how to".
This code was written under 2003, but works with 2005 as well.
By the way, I'm giving you a small subset of subclassing the text box.
Some tweaking may be needed.


The control will raise a "ValueChanged" event, if the text box "text"
changed on lost focus, instead of firing an event on every character
change, which is annoying!


1) Create a user control
2) Switch to Text editing mode
3) After you put in the "Inherits TextBox" line, you will no longer see

the user control on the design screen. The beauty of this method is
that any changes that Microsoft does to their Textbox control in the
future, your textbox will inherit the look and functionality as well.
4) When you're done, you replace all instances of the standard textbox
with your new textbox.


Replace text
Imports System.ComponentModel

with
Imports System.Text

Public Class YourControlName
    Inherits TextBox
    Private m_EnterValue As String = ""
    Public Event ValueChanged(ByVal sender As Object, ByVal e As
System.EventArgs)


    Overloads Property Text(ByVal FormatData As Boolean) As String
        Get
            Text = Me.Text
        End Get
        Set(ByVal Value As String)
            Me.Text = Value
            m_EnterValue = Me.Text
        End Set
    End Property


    Property EnterValue() As String
        Get
            EnterValue= m_EnterValue
        End Get
        Set(ByVal Value As String)
            m_EnterValue = Value
        End Set
    End Property


    Private Sub YourControlName_Leave(ByVal sender As Object, ByVal e
As System.EventArgs) Handles MyBase.Leave
        If m_EnterValue <> Me.Text Then RaiseEvent ValueChanged(sender,

e)
    End Sub
End Class