作者liaommx (Orz)
看板C_Sharp
標題[問題] 透過button_click呼叫原表單的物件..
時間Thu Jan 21 14:52:13 2010
我的程式大概長的是這樣.
也是有關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