如何在Textbox的TextChanged事件中获取旧文本和更改文本框的文本?

时间:2014-12-05 07:39:37

标签: c# .net

我对c#很新。我要求先前的文本和文本框中新更改的文本在文本更改事件上相同。我试图在textchanged事件上获取文本,但它只是新文本。我怎样才能获得以前的文本?

e.g。假设我的文本框中有一个文本“abc”,我通过直接粘贴文本而不是通过键入将其更改为“pqr”。现在在文本更改事件txtbox.text返回“pqr”。 但我需要比较以前的和新的文本,所以我也需要“abc”。那我该怎么办呢?

private void txtFinalTrans_TextChanged_1(object sender, EventArgs e)
{
    gstrOldText = txtFinalTrans.Text;              
}

4 个答案:

答案 0 :(得分:4)

尝试创建全局变量并在GotFocus事件期间放置文本框文本,并在TextChanged事件期间将其用作旧文本,如下所示:

string OldText = string.Empty;
private void textBox1_GotFocus(object sender, EventArgs e)
{
   OldText = textBox1.Text;
}

private void textBox1_TextChanged(object sender, EventArgs e)
{
   string newText = textBox1.Text;
   //Compare OldText and newText here
}

希望这会有所帮助......

答案 1 :(得分:2)

您需要存储旧值。例如,在同一类中的字段或属性中。

private string LastFinalTrans { get; set; }

private void txtFinalTrans_TextChanged_1(object sender, EventArgs e)
{
    TextBox txt = (TextBox) sender;
    if(LastFinalTrans == txt.Text)
    {
        // ...
    }
    LastFinalTrans =  txt.Text;
}

答案 2 :(得分:1)

在Public

中声明OldValue字符串
private void textbox1_Enter(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(textbox1.Text))
            {
                OldValue = textbox1.Text.Trim();
            }

        }

离开功能...

private void textbox1_Leave(object sender, EventArgs e)
        {
            string Newvalue = textbox1.Text;
            //Compare Both Values 

            //OldValue and Newvalue
        }

答案 3 :(得分:0)

冰雹,

对于ASP.NET,完成此功能的最简单方法是使用hiddenField。有一次我希望我可以在文本框上添加一个data属性,然后用一点JavaScript将旧值放到那里,然后在后面的代码中读取该属性。但是不幸的是,这不是回发系统的工作方式。

因此,我们希望获取旧值,并在用户将光标置于TextBox中后立即将其保存在隐藏字段中。我们通过将TextBox的onfocus属性设置为javascript方法的名称来完成保存操作。我们将此方法称为saveOldValue。

<asp:TextBox ID="MyTextBox" runat="server" AutoPostBack="true"   onfocus="setOldValue()" OnTextChanged="MyTextBox_TextChanged"></asp:TextBox>

<asp:HiddenField ID="oldValueHiddenField" Value="" ClientIDMode="Static" runat="server" />

在添加javascript setOldValue方法之前:为了使代码尽可能通用,我们不要让saveOldValue方法对调用它的特定TextBox或将旧值保存到的特定HiddenField有所了解。这样,我们可以将这种方法用于任何TextBox和HiddenFields。因此,让我们将saveOldValue传递给文本框的当前实例,以便它可以访问TextBox的属性。另外,让我们在TextBox上添加一个属性,该属性将保存hiddenField的ID,该ID最终将存储旧的Value;让我们将此属性称为data-hiddenField并为其指定HiddenField的ID。

<asp:TextBox ID="MyTextBox" runat="server" AutoPostBack="true"  data-hiddenField="oldValueHiddenField" onfocus="setOldValue(this)" OnTextChanged="MyTextBox_TextChanged"></asp:TextBox>

<asp:HiddenField ID="oldValueHiddenField" Value="" ClientIDMode="Static" runat="server" />

接下来,让我们在JavaScript中设置方法setOldVaue:

<script>

function setOldValue(e){
//I am using a bit of jQuery here, but feel free to go pure JS

        var hiddenField = $(e).attr("data-hiddenField");
        var oldValue = $(e).val();

        $("#"+hiddenField).val(oldValue);

}

</script>

接下来,让我们获取TextChanged事件[在离开文本框时触发]后面代码中的值:

protected void MyTextBox_TextChanged(object sender, EventArgs e)
{
    var tb = sender as TextBox;
    var oldVaue = oldValueHiddenField.Value;
    var newValue = tb.Text;
}

希望这会增加一些价值。

//和平