关于winform两个窗体显示数据的问题
有一个主窗体A是MDI容器,启动A后同时Show二个窗体B和C易做图作B窗体时,C窗体是未激活的,我在B窗体假如选择一行数据弹出一窗体D,进行操作后,关闭窗体D,这时我窗体B的数据即时更新了,然后我将一些数据传递到了
C窗体中,我想将这些数据添加到C的ListView中,程序是执行了,但C窗体就是显示不出数据(C窗体这时还是未激活的),只有重新点鼠标激活C窗体后,刷新数据才会出来。
请问是什么原因呢,一定要用程序激活C窗体,然后加载的数据才能显示吗?
有什么办法呢???
假如我选择B窗体的某一项,我想让C窗体的相应项也选中,不是没法实现? --------------------编程问答-------------------- 你可以使子窗体在父窗体上停靠,像VS一样,这样客户不激活只能看到窗体名称,要看就会主动激活了。
说点题外话:
这虽然没有解决你的技术问题,但可以解决你的应用问题(绕开技术问题)。现实项目中就存在许多这样的事情,你很难把一些技术问题一一攻克(可能是时间不够,人力资源不够),但经验可以是你绕开一些问题,继续前进。 --------------------编程问答-------------------- 是用的停靠,但还是不行
B,C窗体都是停靠在A窗体上的,目前是选择B中的某一项数据,C窗体激活不了,选择C中的某一行数据,B激活不了。
我想实现有二个功能:
1:选择B中的某一数据,即时的在C窗体中相应的数据也被选中,且将其排到C窗体列表控件的第一行。
2:选择B中的某一数据操作完了了,将数据传递到C窗体,让C窗体的列表控件中添加一行传过来的数据。
----
现在是数据是传过来了,添加操作也执行了,但就是显示不出来,一定要人为的去重新刷一下才出来,难道一定要先激活C窗体,添加的数据才能即时显示??? --------------------编程问答-------------------- 顶,难道没有办法实现吗,我实在想不出来方法,请高手指点
实在不行,我只能用一个窗体显示二个表格了。 --------------------编程问答-------------------- 像vs平台一样,如果我在某个窗体编写代码,如果有行代码出错,vs平台下面那个停靠的错误列表马上就显示出来错误信息了,它是怎么实现的呢?
我在B窗体操作一行数据,把值传到了C窗体,C窗体中的ListView加载了数据,但为什么不即时显示数据呢?
有人知道吗? --------------------编程问答-------------------- 在A主窗全中定义一个ListView变量...在B,C窗体新建一方法及一ListView变量 lv
public formB/formC(ListView lv3)
{
InitializeComponent();
lv=lv3;
}
在SHOW B,C窗体时.把这个变量引用传递进去...如
formB fb=new formB(ListView lv3)
formC fb=new formC(ListView lv3)
在C窗体中 lv3=listView1; //赋值控件
这样就能在A,B,C三个窗体中操作同一个列表控件
如果LZ觉的这个麻烦,可以把ListView lv3 这个声明为静态全局变量,可以为项目定义一个静态类.. --------------------编程问答-------------------- 这个项目中也会经常用到,如主窗休销售单,新增一个窗体选择订单明细,点添加,主窗体的销售单会增加子窗体选择的订单明细
如果声明为静态变量,哪整个项目中都可以访问到了..不过要检查是否有效...
1:选择B中的某一数据,即时的在C窗体中相应的数据也被选中,且将其排到C窗体列表控件的第一行。
B在选中时.再遍历传进来的LV列表变量..再选中相应行... --------------------编程问答-------------------- 多线程。异步更新界面。 --------------------编程问答-------------------- 原因可能是这样的,你传数据到C窗体时,是在构造里加载或是调用一个显示listview的方法对吧,构造只作初始化了,但没有加载进控件,如果你把传去的数据或是调用的方法在C_load里的话,应该能正常显示数据了,你试试看。 --------------------编程问答--------------------
补充:.NET技术 , C#