2014-03-25 33 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應用程序。