[問題] 透過button_click呼叫原表單的物件..

看板C_Sharp作者 (Orz)時間16年前 (2010/01/21 14:52), 編輯推噓3(3011)
留言14則, 2人參與, 最新討論串1/1
我的程式大概長的是這樣. 也是有關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

01/21 16:41, , 1F
宣告成static 然後把form當參數傳進去就可以了
01/21 16:41, 1F

01/21 16:42, , 2F
不要只是靠加個字少個字解決問題就好 要懂為什麼
01/21 16:42, 2F

01/21 16:42, , 3F
懂了你的問題你都可以明白怎麼解決 :)
01/21 16:42, 3F

01/21 16:47, , 4F
看了你的程式碼...發現...好像沒錯吧?? senddata應該也
01/21 16:47, 4F

01/21 16:47, , 5F
不需要是static 這樣不能過嗎?
01/21 16:47, 5F

01/21 16:53, , 6F
不能過...我用另一種方法..用return字串的方法.
01/21 16:53, 6F

01/21 16:54, , 7F
把主導權拉回form本身..就可以了
01/21 16:54, 7F

01/21 16:54, , 8F
senddata 的最後面,close之後,return 接收到的字串
01/21 16:54, 8F

01/21 16:55, , 9F
就可以達到我想做的了..算是另一種解決方法..吧
01/21 16:55, 9F

01/21 16:55, , 10F
不過那也要寫出的程式是老闆想要的才行...囧
01/21 16:55, 10F

01/21 22:30, , 11F
完全不知你所云...除了一些語法小錯誤,我編譯就可以過
01/21 22:30, 11F

01/21 22:31, , 12F
要不是你這邊程式碼亂寫 就是你有地方搞錯了
01/21 22:31, 12F

01/22 06:43, , 13F
我流程完全是這樣..囧...所以也不知道錯在哪..
01/22 06:43, 13F

01/22 06:43, , 14F
這是vs2005寫的
01/22 06:43, 14F
文章代碼(AID): #1BL_cWXP (C_Sharp)