2014-03-25 32 views
0

这里是我的代码:文本框的值不会委托功能在asp.net改变

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); 
     } 
} 
+0

你会得到什么错误? –

+0

网页中的服务器端定时器?该页面可能已完成呈现并且页面对象在第一个Tick到达之前被销毁!另外:你在哪里等待串口?您现在正试图在服务器上读取它(并且出于与计时器相同的原因) –

+0

没有收到任何错误,只是该值未设置为文本框 –

回答

1

这不能做你的编码的方式。基本上,你正在尝试像Windows应用程序一样对待你的网页。您需要了解上面编写的“代码隐藏”代码,它运行在一台计算机上,而文本字段所在的网页显示在另一台计算机上。一旦页面构建代码完成运行,服务器就不能更改页面。您可以使用网页中的回传和Ajax回调服务器,但即使这样也可能无法帮助您编写您要编写的代码。

为了更好地了解asp.net web页面的处理的基本原则,从这里开始:ASP.NET page life cycle explanation

或者,你可以编写网页代码为使用Windows窗体或WPF应用程序。