前言:
上篇讲述了如何手工调用海康的车牌识别摄像头进行拍照和识别车牌,我车牌识别的程序在应用的一个窗体,需要去更新另外一个窗体里面的lable中的内容为识别的车牌信息,同时还要写入到另外窗体的datagridview中。
一、实现效果
在车牌识别中识别的车牌信息,需要同步更改过磅信息窗口中label和datagirdview转给中的内容。
二、实现过程:
1. 更改label 和 datagridview访问属性
首先把两个空间的访问属性由默认的protected 更改为public ,这样就能够被其他窗体给访问了。Form2是两个控件坐在窗体
2. 车牌识别窗体中建立一个内部变量f2
类型是Fom2, 并且在构造函数中初始化f2 ,同时还要在窗体控制类中,将实例化的fom2 作为参数传递给车牌识别窗体。
对于窗体控制类,主要就是实现同时打开三个窗体了,具体的内容可以查看我前面的文章
拌合楼管理系统(十六)c#如何实现点击同时启动两个窗体,并且窗体全部关闭后才退出程序-CSDN博客
3. 定义委托和实现数据更新的过程
已更新车牌的数据为例,对datagridview更新也差不多,就是插入一行内容,第一列内容是车牌,其他内容为空。
public delegate void UpdateForm2ChePaiInfo(string info);
private void UpdateChePaiLable(string chepai)
{
ChePailabel.Text = "车牌:" + chepai;
}
4. 调用委托更新数据
调用代码很简,就是一句话,使用控件的BeiginInvoke方法。
f2.chepailabel.BeginInvoke(new UpdateForm2ChePaiInfo(UpdateForm2ChepaiLable), stringPlateLicense);
三、总结:
没有太多的技术难度,核心思想就将控件的访问属性改成public这样就其它窗体能够访问到。也许这样的做法不是最优的,但算是简单有效的解决了问题。