我对c#很新。我要求先前的文本和文本框中新更改的文本在文本更改事件上相同。我试图在textchanged事件上获取文本,但它只是新文本。我怎样才能获得以前的文本?
e.g。假设我的文本框中有一个文本“abc”,我通过直接粘贴文本而不是通过键入将其更改为“pqr”。现在在文本更改事件txtbox.text返回“pqr”。 但我需要比较以前的和新的文本,所以我也需要“abc”。那我该怎么办呢?
private void txtFinalTrans_TextChanged_1(object sender, EventArgs e)
{
gstrOldText = txtFinalTrans.Text;
}
答案 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;
}
希望这会增加一些价值。
//和平