看板 C_Sharp 關於我們 聯絡資訊
我的程式大概長的是這樣. 也是有關serial port的問題. 但是應該主要還是跨物件參考的問題. 大略程式碼如下, 我是希望click按鈕之後, 執行一段程式碼,其中有一個內容需要去接收回傳的訊息, 如果有資料回傳的話, 就呼叫change. 但是這邊會有一點問題出現. 總共出現兩個錯誤. 錯誤 1 需要有物件參考才能使用非靜態欄位、方法或屬性 'WindowsApplication1.Form1.textBox2' D:\c_sharp\寫入 \WindowsApplication1\WindowsApplication1\Form1.cs 190 67 WindowsApplication1 錯誤 2 需要有物件參考才能使用非靜態欄位、方法或屬性 'WindowsApplication1.Form1.change(string, System.Windows.Forms.Control)' D:\c_sharp\寫入 \WindowsApplication1\WindowsApplication1\Form1.cs 190 21 WindowsApplication1 若將change的宣告改成static 錯誤2則變成 錯誤 2 關鍵字 'this' 不能用於靜態屬性、靜態方法或靜態欄位初始設定式 D:\c_sharp\寫入 \WindowsApplication1\WindowsApplication1\Form1.cs 206 17 WindowsApplication1 請問這邊應該怎麼解決呢? 找了幾個都說宣告static就好,只是宣告了,問題還是在. 以上,麻煩各位了. -- public form() { private delegate void changeuicallback(string value, Control ctl); private void button3_click() { senddata(argu1,argu2,argu3); } private void senddata(string argu1,argu2,argu3) { serial.open();//開啟serial port while (port.BytesToRead != 0) { change(Convert.ToString(port.ReadByte(), 16), textBox2); } serial.close(); } private void change(string data, Control ctl) { data = data.ToUpper().PadLeft(2, '0'); if (this.InvokeRequired) { changeuicallback uu2 = new changeuicallback(change); this.Invoke(uu2, data, ctl); } else { ctl.Text += data; } } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.169.229.97
cplusplus:宣告成static 然後把form當參數傳進去就可以了 01/21 16:41
cplusplus:不要只是靠加個字少個字解決問題就好 要懂為什麼 01/21 16:42
cplusplus:懂了你的問題你都可以明白怎麼解決 :) 01/21 16:42
cplusplus:看了你的程式碼...發現...好像沒錯吧?? senddata應該也 01/21 16:47
cplusplus:不需要是static 這樣不能過嗎? 01/21 16:47
liaommx:不能過...我用另一種方法..用return字串的方法. 01/21 16:53
liaommx:把主導權拉回form本身..就可以了 01/21 16:54
liaommx:senddata 的最後面,close之後,return 接收到的字串 01/21 16:54
liaommx:就可以達到我想做的了..算是另一種解決方法..吧 01/21 16:55
liaommx:不過那也要寫出的程式是老闆想要的才行...囧 01/21 16:55
cplusplus:完全不知你所云...除了一些語法小錯誤,我編譯就可以過 01/21 22:30
cplusplus:要不是你這邊程式碼亂寫 就是你有地方搞錯了 01/21 22:31
liaommx:我流程完全是這樣..囧...所以也不知道錯在哪.. 01/22 06:43
liaommx:這是vs2005寫的 01/22 06:43