在编写c#上位机时遇到的奇怪的问题。多线程并行。

我的想法是
写一个自定义按钮控件。这个按钮可以控制plc的启停。而也会变色。但是plc的数据要时刻与此控件绑定。plc一变按钮就会改变颜色。以达到实时控制的效果。

不知道大家理解了吗

我遇到的主要的难点是在操作plc数据改变后打过断点测试过 backcolor属性已经改变。但是按钮却没有实时变色。用的是backcolorchange事件

同时一个蹊跷的事情。就是我可以通过点击事件来控制按钮改变。注意是自定义事件。点击事件是在自定义按钮空间里面的。不是放在form窗体里面的。
refresh();使用过。没有用

img

附几个关键代码

img

img

img

你这是本末倒置了呀
你直接修改它的backcolor属性就是修改颜色了,不要去触发什么change事件,change事件是在backcolor改变时自动触发执行的
我也没有看到你读取plc的代码在哪

研究一下:Buttion1.DataBindings.Add("backcolor",this,"plcState")-----------------------把button1和你form的plcstate进行双向binding-------玩过wpf,vue的应该知道我说的是啥
就提示到这里了,有想法的自己找资料看。没想法的,还是喜欢按2008年那些vb过来的人和教材弄,我们也劝不了

顺带推个昨天的文章


当然可以说说的是,其实这些东西2008年net1.1版就存在,只是没多人讲罢了,毕竟那时候的“专家”们本身都是从vb,delphi过来的,他们自己都不清楚是个啥原理,老外倒是在13年左右把这块研究清楚了,所以13年后才有了MVVM提法。只是俺们某个园子只把mvvm限制在wpf罢了,我们当时也劝过MVVM不只在wpf,可惜就是到今天你也可以看到评论里的态度