【问题标题】:Event triggering but not updating textbox事件触发但不更新文本框
【发布时间】:2014-05-04 04:09:17
【问题描述】:

我有一个具有 webform1.asp.cs 和自定义类 class1 的 asp.net 应用程序。 class1 在 webform1.asp.cs 中实例化。我正在从 class1 引发自定义事件 event1。此 event1 在 webform1.asp.cs 中使用。我有一个 asp.net 文本框控件(多行)。在 webform1.asp.cs 中使用 event1 代码,我将一些文本写入 asp.net 文本框。引发事件,但文本框不显示文本。但是,当我写入 Debug 时,它会显示文本。怎么回事?

//class1中的事件代码:

public delegate void StatusChange(object sender, EventHelper args);
public class EventHelper : EventArgs
{
    public string message;
}

EventHelper e1 = new EventHelper();
            e1.message = "some text";
           OnStatusChange(this, e1);

//在webform1.asp.cs中:

protected void Page_Load(object sender, EventArgs e)
{
    Class1 cs = new Class1();
    cs.OnStatusChange +=cs_OnStatusChange;
}

void cs_OnStatusChange(object sender, EventHelper e)
{
    TextBox1.Text += e.message;
}

【问题讨论】:

  • 您的代码在页面生命周期中在哪里被调用?是在页面初始化还是页面加载之后?
  • 需要注意的一点是您的 Class1 cs 变量在 page_load 方法的范围内。没有看到比您发布的更多代码,很难判断发生了什么。 OnStatusChange 在第 1 类中的哪个位置被触发,该事件在 Web 表单中的哪个位置触发?

标签: c# asp.net events


【解决方案1】:

最后我意识到当事件发生时,asp.net webcontrols 不会被重新渲染,除非你回发。这意味着当从另一个类引发事件时,尽管事件处理程序正在工作并且似乎文本框已填充到代码中,但它没有在 UI 上呈现。我最终创建了一个 WPF 浏览器应用程序。

【讨论】:

    猜你喜欢
    • 2021-11-27
    • 2010-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多