60 个解决方案
#1
1.用ifreame的话 重新跳转到ireame.src=A窗体路径,还有很多onclick="prent.a.location.reload()" 或者--问百度
2.从新定位到A窗体
3.a到b用window.opendialog(),根据b返回值,用js自动刷新a
2.从新定位到A窗体
3.a到b用window.opendialog(),根据b返回值,用js自动刷新a
#2
A :
定义公用字段 B b = null;
创建B的时候,B bb = new B();
b = bb;
B :
修改之后;
A:
b. 属性可以直接使用
定义公用字段 B b = null;
创建B的时候,B bb = new B();
b = bb;
B :
修改之后;
A:
b. 属性可以直接使用
#3
研究ing~~~
#4
B窗体修改后给A窗体发送Event,A收到Event后进行数据更新
#5
用全局变量。。。。
#6
使用事件机制,A窗口响应到B窗口触发的事件!
#7
我的这样来做的:
在b窗体创建一个带参数的构造函数 参数为a窗体
在a窗体触发事件时实例b窗体 将a窗体作为参数传入到窗体的实例
此时a窗体和b窗体就产生了关联
代码如下:
a窗体:
public partial class Form1: Form
{
public Form1)
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2this);
form2Show();
}
}
b窗体:
public Form2()
{
InitializeComponent();
}
Form1 form1 = new Form1();
public Form2(Form1 form1)
{
InitializeComponent();//必须写 而且要卸载赋值的前面
this.form1 = form1;
this.textBox1.Text = form1.Controls["txtMsg"].Text;
}
private void button1_Click(object sender, EventArgs e)
{
form1.Controls["txtMsg"].Text = this.textBox1.Text;
this.Close();
}
这样单击a窗体的按钮打开b窗体,在b窗体显示a窗体文本框的内容。进行修改,点击b窗体中的修改按钮,回到a窗体,同时a窗体中文本框中值得到了修改。
在b窗体创建一个带参数的构造函数 参数为a窗体
在a窗体触发事件时实例b窗体 将a窗体作为参数传入到窗体的实例
此时a窗体和b窗体就产生了关联
代码如下:
a窗体:
public partial class Form1: Form
{
public Form1)
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2this);
form2Show();
}
}
b窗体:
public Form2()
{
InitializeComponent();
}
Form1 form1 = new Form1();
public Form2(Form1 form1)
{
InitializeComponent();//必须写 而且要卸载赋值的前面
this.form1 = form1;
this.textBox1.Text = form1.Controls["txtMsg"].Text;
}
private void button1_Click(object sender, EventArgs e)
{
form1.Controls["txtMsg"].Text = this.textBox1.Text;
this.Close();
}
这样单击a窗体的按钮打开b窗体,在b窗体显示a窗体文本框的内容。进行修改,点击b窗体中的修改按钮,回到a窗体,同时a窗体中文本框中值得到了修改。
#8
不知道insert被按下,有些地方“(”被我删掉了 请见谅
还请大虾们有更好的方法告知,本人qq76960759
还请大虾们有更好的方法告知,本人qq76960759
#9
#10
如果是winform的话,修改数据的窗体做成模式窗体就可以了!在模式窗体打开方法后直接刷新需要刷新的窗体就可以了!
#11
Event...
#12
这个问题问得太笼统了,但从控件来说,最常用的方法就是构造函数传参法,网上有的是。。
#13
在一个类文件中顶一个公共静态变量,做为数据变动的标志,比如说public static int flag,初始值随便设一个例如 flag=0.
A窗体:
用Timer 控件,在其事件里写更新操作,循环判断flag 有没有 改变,有则执行更新操作,执行完后把 flag 还原初始值。
B窗体:
修改数据的同时,修改那个类的flag 变量 其他事你懂的
A窗体:
用Timer 控件,在其事件里写更新操作,循环判断flag 有没有 改变,有则执行更新操作,执行完后把 flag 还原初始值。
B窗体:
修改数据的同时,修改那个类的flag 变量 其他事你懂的
#14
谢谢大家为我出的招啊,CSDN人才就是多啊,谢谢!!!
#15
使用委托:
FormA:
private void Button_Click(object sender, EventArgs e)
{
FormB b = new FormB();
b.AddUsersInfor = this.AddUsersInfor;
b.ShowDialog();
}
private void AddUsersInfor(string updatedata)
{
Console.Writeline( updatedata );
}
FormB:
public Action<string> AddUsersInfor;
private void Button_Click(object sender, EventArgs e)
{
if (AddUsersInfor != null) AddUsersInfor( "test data" );
}
#16
用委托是最好的方法!
#17
用event即可,步骤如下:
1。你在B窗口中定一个event,A Form中你包含一个对B Form的引用,然后你在A中写一个方法C,注册到B的这个event上。
2。然后你修改B中数据的方法中触发这个event,A就会接收到并执行方法C,此处注意你需要在A的UI线程中去执行具体的更新界面的函数。
1。你在B窗口中定一个event,A Form中你包含一个对B Form的引用,然后你在A中写一个方法C,注册到B的这个event上。
2。然后你修改B中数据的方法中触发这个event,A就会接收到并执行方法C,此处注意你需要在A的UI线程中去执行具体的更新界面的函数。
#18
试了一下,还没出结果
#19
委托
听歌
听歌
#20
如果是winform 我建议你用BindingSource这个不但能解决你的问题还能实现datagridview无刷新
#21
最笨的办法就是定义一个静态的字段
#22
委托+事件
#23
A窗体用于显示所有数据,B窗体对数据进行了修改,改B窗体对数据进行修改后,怎样让A窗体中的数据更新
从描述看,你的应该属于Winform应用程序,推荐用委托,就是在B窗体中定义一个事件,然后在B窗体中修改数据后,触发这个事件。
最后还要让A窗体监听B窗体的这个事件,这样B修改后,A就会知道这个事件,执行相应的刷新操作。
从描述看,你的应该属于Winform应用程序,推荐用委托,就是在B窗体中定义一个事件,然后在B窗体中修改数据后,触发这个事件。
最后还要让A窗体监听B窗体的这个事件,这样B修改后,A就会知道这个事件,执行相应的刷新操作。
#24
这个是正解
#25
#26
]
还真有用
#27
#28
B从A中用window.open打开,修改完毕之后关闭B,同时用JS document.form[0].submit();这句话就是刷新A了,非常简单。
#29
#30
这是一个程序还是两个程序?是进程级的还是线程级的,有四套方案。同一个程序,一个进程内,最先近的方法就是委托了。同一进程的两个线程间就用全局》》》》》
也就是这个样子了。看你的结构了。
也就是这个样子了。看你的结构了。
#32
一会去试试委托~~~~~~~~
#33
事件触发重新绑定
#34
事件触发重新绑定
#35
DotNET 的回调可以用委托(事件)或者接口
#36
DotNET 中的回调可以用委托(事件)或接口
#37
在B窗体修改数据之前把A窗体隐藏起来,
等修改完数据后在把A窗体show出来,
在B修改的数据就能在A上面刷新了
等修改完数据后在把A窗体show出来,
在B修改的数据就能在A上面刷新了
#38
我觉得在B窗体输入数据前,
先把A窗体隐藏起来,
在B窗体上输完数据后,关闭本窗体
在show出A窗体
那在B的数据就能在A窗体上刷新
是个笨方法,但实用
先把A窗体隐藏起来,
在B窗体上输完数据后,关闭本窗体
在show出A窗体
那在B的数据就能在A窗体上刷新
是个笨方法,但实用
#39
我觉得在B窗体输入数据前,
先把A窗体隐藏起来,
在B窗体上输完数据后,关闭本窗体
在show出A窗体
那在B的数据就能在A窗体上刷新
是个笨方法,但实用
先把A窗体隐藏起来,
在B窗体上输完数据后,关闭本窗体
在show出A窗体
那在B的数据就能在A窗体上刷新
是个笨方法,但实用
#40
可以用委托+事件,也可以设置全局变量,加上一个Timer控件,专门查看全局变量是否改变
#41
通过委托或构造方法,看下你要传递的数据是什么类型,就在相应的窗体中,声明这个数据类型的 变量,并初始化来接收,作为参数传递
#42
楼主可以搜下窗体之间传值的方法,有好几种
#43
#44
用委托事件吧,代码自己写
#45
全局不安全 面向对象的编程最忌讳用全局变量了
#46
委托回调
#47
将显示功能单独写一个方法,修改完再调用一下...
#48
prent.reload()
#49
parent.reload()
#50
这是正解。绝对没问题!
#1
1.用ifreame的话 重新跳转到ireame.src=A窗体路径,还有很多onclick="prent.a.location.reload()" 或者--问百度
2.从新定位到A窗体
3.a到b用window.opendialog(),根据b返回值,用js自动刷新a
2.从新定位到A窗体
3.a到b用window.opendialog(),根据b返回值,用js自动刷新a
#2
A :
定义公用字段 B b = null;
创建B的时候,B bb = new B();
b = bb;
B :
修改之后;
A:
b. 属性可以直接使用
定义公用字段 B b = null;
创建B的时候,B bb = new B();
b = bb;
B :
修改之后;
A:
b. 属性可以直接使用
#3
研究ing~~~
#4
B窗体修改后给A窗体发送Event,A收到Event后进行数据更新
#5
用全局变量。。。。
#6
使用事件机制,A窗口响应到B窗口触发的事件!
#7
我的这样来做的:
在b窗体创建一个带参数的构造函数 参数为a窗体
在a窗体触发事件时实例b窗体 将a窗体作为参数传入到窗体的实例
此时a窗体和b窗体就产生了关联
代码如下:
a窗体:
public partial class Form1: Form
{
public Form1)
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2this);
form2Show();
}
}
b窗体:
public Form2()
{
InitializeComponent();
}
Form1 form1 = new Form1();
public Form2(Form1 form1)
{
InitializeComponent();//必须写 而且要卸载赋值的前面
this.form1 = form1;
this.textBox1.Text = form1.Controls["txtMsg"].Text;
}
private void button1_Click(object sender, EventArgs e)
{
form1.Controls["txtMsg"].Text = this.textBox1.Text;
this.Close();
}
这样单击a窗体的按钮打开b窗体,在b窗体显示a窗体文本框的内容。进行修改,点击b窗体中的修改按钮,回到a窗体,同时a窗体中文本框中值得到了修改。
在b窗体创建一个带参数的构造函数 参数为a窗体
在a窗体触发事件时实例b窗体 将a窗体作为参数传入到窗体的实例
此时a窗体和b窗体就产生了关联
代码如下:
a窗体:
public partial class Form1: Form
{
public Form1)
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2this);
form2Show();
}
}
b窗体:
public Form2()
{
InitializeComponent();
}
Form1 form1 = new Form1();
public Form2(Form1 form1)
{
InitializeComponent();//必须写 而且要卸载赋值的前面
this.form1 = form1;
this.textBox1.Text = form1.Controls["txtMsg"].Text;
}
private void button1_Click(object sender, EventArgs e)
{
form1.Controls["txtMsg"].Text = this.textBox1.Text;
this.Close();
}
这样单击a窗体的按钮打开b窗体,在b窗体显示a窗体文本框的内容。进行修改,点击b窗体中的修改按钮,回到a窗体,同时a窗体中文本框中值得到了修改。
#8
不知道insert被按下,有些地方“(”被我删掉了 请见谅
还请大虾们有更好的方法告知,本人qq76960759
还请大虾们有更好的方法告知,本人qq76960759
#9
#10
如果是winform的话,修改数据的窗体做成模式窗体就可以了!在模式窗体打开方法后直接刷新需要刷新的窗体就可以了!
#11
Event...
#12
这个问题问得太笼统了,但从控件来说,最常用的方法就是构造函数传参法,网上有的是。。
#13
在一个类文件中顶一个公共静态变量,做为数据变动的标志,比如说public static int flag,初始值随便设一个例如 flag=0.
A窗体:
用Timer 控件,在其事件里写更新操作,循环判断flag 有没有 改变,有则执行更新操作,执行完后把 flag 还原初始值。
B窗体:
修改数据的同时,修改那个类的flag 变量 其他事你懂的
A窗体:
用Timer 控件,在其事件里写更新操作,循环判断flag 有没有 改变,有则执行更新操作,执行完后把 flag 还原初始值。
B窗体:
修改数据的同时,修改那个类的flag 变量 其他事你懂的
#14
谢谢大家为我出的招啊,CSDN人才就是多啊,谢谢!!!
#15
使用委托:
FormA:
private void Button_Click(object sender, EventArgs e)
{
FormB b = new FormB();
b.AddUsersInfor = this.AddUsersInfor;
b.ShowDialog();
}
private void AddUsersInfor(string updatedata)
{
Console.Writeline( updatedata );
}
FormB:
public Action<string> AddUsersInfor;
private void Button_Click(object sender, EventArgs e)
{
if (AddUsersInfor != null) AddUsersInfor( "test data" );
}
#16
用委托是最好的方法!
#17
用event即可,步骤如下:
1。你在B窗口中定一个event,A Form中你包含一个对B Form的引用,然后你在A中写一个方法C,注册到B的这个event上。
2。然后你修改B中数据的方法中触发这个event,A就会接收到并执行方法C,此处注意你需要在A的UI线程中去执行具体的更新界面的函数。
1。你在B窗口中定一个event,A Form中你包含一个对B Form的引用,然后你在A中写一个方法C,注册到B的这个event上。
2。然后你修改B中数据的方法中触发这个event,A就会接收到并执行方法C,此处注意你需要在A的UI线程中去执行具体的更新界面的函数。
#18
试了一下,还没出结果
#19
委托
听歌
听歌
#20
如果是winform 我建议你用BindingSource这个不但能解决你的问题还能实现datagridview无刷新
#21
最笨的办法就是定义一个静态的字段
#22
委托+事件
#23
A窗体用于显示所有数据,B窗体对数据进行了修改,改B窗体对数据进行修改后,怎样让A窗体中的数据更新
从描述看,你的应该属于Winform应用程序,推荐用委托,就是在B窗体中定义一个事件,然后在B窗体中修改数据后,触发这个事件。
最后还要让A窗体监听B窗体的这个事件,这样B修改后,A就会知道这个事件,执行相应的刷新操作。
从描述看,你的应该属于Winform应用程序,推荐用委托,就是在B窗体中定义一个事件,然后在B窗体中修改数据后,触发这个事件。
最后还要让A窗体监听B窗体的这个事件,这样B修改后,A就会知道这个事件,执行相应的刷新操作。
#24
这个是正解
#25
#26
]
还真有用
#27
#28
B从A中用window.open打开,修改完毕之后关闭B,同时用JS document.form[0].submit();这句话就是刷新A了,非常简单。
#29
#30
这是一个程序还是两个程序?是进程级的还是线程级的,有四套方案。同一个程序,一个进程内,最先近的方法就是委托了。同一进程的两个线程间就用全局》》》》》
也就是这个样子了。看你的结构了。
也就是这个样子了。看你的结构了。
#31
#32
一会去试试委托~~~~~~~~
#33
事件触发重新绑定
#34
事件触发重新绑定
#35
DotNET 的回调可以用委托(事件)或者接口
#36
DotNET 中的回调可以用委托(事件)或接口
#37
在B窗体修改数据之前把A窗体隐藏起来,
等修改完数据后在把A窗体show出来,
在B修改的数据就能在A上面刷新了
等修改完数据后在把A窗体show出来,
在B修改的数据就能在A上面刷新了
#38
我觉得在B窗体输入数据前,
先把A窗体隐藏起来,
在B窗体上输完数据后,关闭本窗体
在show出A窗体
那在B的数据就能在A窗体上刷新
是个笨方法,但实用
先把A窗体隐藏起来,
在B窗体上输完数据后,关闭本窗体
在show出A窗体
那在B的数据就能在A窗体上刷新
是个笨方法,但实用
#39
我觉得在B窗体输入数据前,
先把A窗体隐藏起来,
在B窗体上输完数据后,关闭本窗体
在show出A窗体
那在B的数据就能在A窗体上刷新
是个笨方法,但实用
先把A窗体隐藏起来,
在B窗体上输完数据后,关闭本窗体
在show出A窗体
那在B的数据就能在A窗体上刷新
是个笨方法,但实用
#40
可以用委托+事件,也可以设置全局变量,加上一个Timer控件,专门查看全局变量是否改变
#41
通过委托或构造方法,看下你要传递的数据是什么类型,就在相应的窗体中,声明这个数据类型的 变量,并初始化来接收,作为参数传递
#42
楼主可以搜下窗体之间传值的方法,有好几种
#43
#44
用委托事件吧,代码自己写
#45
全局不安全 面向对象的编程最忌讳用全局变量了
#46
委托回调
#47
将显示功能单独写一个方法,修改完再调用一下...
#48
prent.reload()
#49
parent.reload()
#50
这是正解。绝对没问题!