作者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
1F:推 cplusplus:宣告成static 然後把form当参数传进去就可以了 01/21 16:41
2F:→ cplusplus:不要只是靠加个字少个字解决问题就好 要懂为什麽 01/21 16:42
3F:→ cplusplus:懂了你的问题你都可以明白怎麽解决 :) 01/21 16:42
4F:推 cplusplus:看了你的程式码...发现...好像没错吧?? senddata应该也 01/21 16:47
5F:→ cplusplus:不需要是static 这样不能过吗? 01/21 16:47
6F:→ liaommx:不能过...我用另一种方法..用return字串的方法. 01/21 16:53
7F:→ liaommx:把主导权拉回form本身..就可以了 01/21 16:54
8F:→ liaommx:senddata 的最後面,close之後,return 接收到的字串 01/21 16:54
9F:→ liaommx:就可以达到我想做的了..算是另一种解决方法..吧 01/21 16:55
10F:→ liaommx:不过那也要写出的程式是老板想要的才行...囧 01/21 16:55
11F:推 cplusplus:完全不知你所云...除了一些语法小错误,我编译就可以过 01/21 22:30
12F:→ cplusplus:要不是你这边程式码乱写 就是你有地方搞错了 01/21 22:31
13F:→ liaommx:我流程完全是这样..囧...所以也不知道错在哪.. 01/22 06:43
14F:→ liaommx:这是vs2005写的 01/22 06:43