1)构造
class aaa
FormAbount _f;
public aaa(FormAbount f)
{
_f=f;
f.text.....
}
2)静态
定义一个静态类 list<string>
接收类不停外立面插入数据
窗体用TIMER每个一段时间获取数据
3)委托 建议用这种方式
代码清晰度最高
class aaa
FormAbount _f;
public aaa(FormAbount f)
{
_f=f;
f.text.....
}
2)静态
定义一个静态类 list<string>
接收类不停外立面插入数据
窗体用TIMER每个一段时间获取数据
3)委托 建议用这种方式
代码清晰度最高
void write(string msg)
{
if (listBox1.InvokeRequired)
{
listBox1.Invoke(new Write(write), msg);
}
else
{
listBox1.Items.Insert(0, msg);
}
}
然后在类里面写了
public delegate void Write(string msg);
public class ByteDataHandle
{
public Write write;
public static void xxoo(string ooxx)
{
write("xxoo");
}
}
调用就是 ByteDataHandle handle = new ByteDataHandle();
handle.write = write;里面就可以输出了...或者给控件赋值啥的
撸主不懂的用事件? 公共类不应去调用UI的东西 ,而是通过事件把数据向外输出这样就离了与UI上的代码交互了。就不用考虑UI调还是不调,由调用者去决定。
public class ComMachine
{
public event Action<string> Changed; private void OnChanged(string strValue)
{
if (Changed != null)
{
Changed(strValue);
}
}
public void Process()
{
//类内部干活
for (int i = 0; i < 10; i++)
{
OnChanged(i.ToString());//数所输出到事件
}
}
}
调上面的公共类ComMachine mac = new ComMachine();
mac.Changed += new Action<string>(mac_Changed); //实列化后绑定事件
mac.Process();//
void mac_Changed(string obj)
{
//外部取结果
}
handle.write = write;
报错误:
错误 1 无法使用实例引用来访问成员“HSVG.Tcp.write”;请改用类型名来限定它