【问题标题】:Textbox value does not change from delegate function in asp.net文本框值不会从 asp.net 中的委托函数更改
【发布时间】:2014-03-25 16:11:00
【问题描述】:

这是我的代码:

delegate void del(string data);
    public partial class CreateUser : System.Web.UI.Page
    {
        static string rfidkey;
        SerialPort serialPort1;
        //Timer timer1;
        del MyDlg;
        private delegate void SetTextDeleg(string text);
public CreateUser()
        {
            serialPort1 = new SerialPort();
            serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);
            //
            timer1 = new Timer();
            timer1.Interval = 100;
            timer1.Enabled = false;
            timer1.Tick += new EventHandler<EventArgs>(timer1_Tick);
            //
            MyDlg = new del(Display);
        }
void Display(string s)
        {
            txtRFIDKey.Text = s;
}
void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            Data.s = serialPort1.ReadExisting();
            //txtRFIDKey.Text = Data.s;
            MyDlg.BeginInvoke(Data.s, null, null);
        }
}

【问题讨论】:

  • 你遇到了什么错误?
  • 网页中的服务器端计时器?页面可能已经完成渲染,并且页面对象在第一个 Tick 到达之前被销毁!另外:你期望那个串口在哪里?您现在正尝试在服务器上读取它(并且由于与计时器相同的原因而失败)
  • 我没有收到任何错误,只是该值没有设置为文本框
  • 您需要提供更多详细信息,说明您的问题是什么、您看到了什么错误,以及您的代码中哪些地方没有看到预期的结果。只是用标题添加代码 sn-p 不是一个格式正确的问题。
  • 我只想在收到值时将值设置为文本框。

标签: c# asp.net


【解决方案1】:

这不能按照您的编码方式完成。基本上,您正在尝试将您的网页视为 Windows 应用程序。您需要了解“背后的代码”,您上面编写的代码在一台计算机上运行,​​而文本字段所在的网页则显示在另一台计算机上。并且一旦页面构建代码完成运行,服务器就无法更改页面。您可以使用网页中的回发和 Ajax 来回调服务器,但即使这样也可能对您尝试编写的代码没有帮助。

要更好地了解 asp.net 网页处理的基础知识,请从这里开始:ASP.NET page life cycle explanation

或者,您可以使用 Windows 窗体或 WPF 将您的页面编码为应用程序。

【讨论】:

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