问题描述
- VC++ 主窗口与子窗口ListCtrl传值(有文字有整数,列表形式)
-
在主窗口(父窗口)类中定义一个数据成员,用于实时更新ListCtrl的内容,当执行添加或者删除操作时,对应着更新这个数据成员。执行查找操作时,将主窗口的这个数据成员的指针传递给查找窗口(子窗口)对应的类中(在查找类中定义一个对应类型的数据成员指针),那么取数据时直接用的主窗口的实时数据。 现在遇到相同的问题,有些不太明白,恳请大虾贴出上述方法的具体代码,谢谢啦!
解决方案
使用委托与事件,如果是使子窗体中的内容·随父窗体的变化的话,则(FrmMX是父窗体,frmProductCert是子窗体)
第一步:
先在父窗体中定义委托与事件
public partial class FrmMX : Form
{
public delegate void frmProductCert(string sReport);
public event frmProductCert Bind;
}
第二步:
在子窗体中创建父窗体的实例,并且将父窗体的事件绑定子窗体中的方法
var frm = new FrmMX();
frm.Bind += new FrmMX.frmProductCert(BindGridMX); //BindGridMX是子窗体中的方法,也是需要改变的部分的方法
第三步:
在父窗体中调用该事件就OK了
Bind(sReport); //在父窗体中调用之前定义的事件
解决方案二:
文章提到的方式用变量绑定控件的方式
其实更灵活的方式,你直接用CListCtrl的成员函数来获取,InsertItemData 插入数据。GetItemData读取数据
解决方案三:
参考:
http://www.sowsoy.com/topics-391.html
主窗体向子窗体传递可以用构造函数。
子窗体可以用Owner向主窗体传值。
还可以使用非模态的对话框,使用消息传值。
时间: 2024-12-03 17:35:17