关于WINFORM里面刷新数据的问题,求围观!!!! winform 里面 form2 添加信息,添加成功后,form1更新。form1绑定的是form2所添加的信息。怎么实现Form2添加完后让form1刷新数据。是winform里面。谢谢,谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1、如果form2是form1打开的,那么可以在form2关闭时,重新获取数据绑定,就实现刷新了。2、如果想定时刷新,就放一个timer。 用事件from2添加数据后触发from1数据更新 不行的。这是winform跟web的不一样的,这也是我纠结了半天的问题。 委托修改主窗体相关数据http://topic.csdn.net/u/20100106/20/e9697297-75f9-4450-aaa9-da0da416cf41.html?39668 是第一种情况。但是我在绑定成功的时候,已经再次调用了form1的bind方法了啊。但是没反应的。要不我也不来论坛求救了。。 方法有21。form2修改到数据库 关闭后 重新绑定 form1 2。form1 中写一个public方法 在form2关闭前 调用form1中的方法方法2 又有两种传递form1 的方法1。form1 作为form2 的ower 传递过去2。form2 中写一个 以form1 为参数的构造函数 初始化form2的时候就传递过去 绑定数据是到数据控件,清楚数据啊,然后重新绑定,怎么不能重新绑定呢?这个比web可好控制多了 你怎么打开的form2呢?没反应是你的bind方法的问题吧 是在form1上面有个按钮叫添加。单击这个按钮的时候弹出form2.在form2添加信息成功,单击关闭,回到form1,是不是应该看到刚才添加的那条数据的?可是没有。我已经在form2添加成功后写了:from1 f1=new form1();f1.bind(); this.close();但是没反应的。我的form1里面绑定数据就是调用的Bind()方法,不会有事的。 我的代码是这样写的: public void BindList() { string sql="select * from Rip_Role"; RolesList.DataSource = BLL.Promissions.ExecuteDatatable(sql, CommandType.Text, null); } 下面的是在添加成功时的: if (BLL.Promissions.ExecuteNonQuery(sql, CommandType.Text, parms)>0) { PermissionManager p = new PermissionManager(); p.BindList(); this.Close(); } form1获得焦点事件 然后重新绑定 刷新 看看行不行 用观察者模式来做form2修改后 给form1一个委托事件 form1在事件中实现刷新 我记得有给refresh 试试 //winForm1里: //绑定事件,我这是绑定到combobox public void BindDDL(参数) { cobb_server.DataSource = Bl.LoadSSr(参数); cobb_server.DisplayMember = "QdbIP"; cobb_server.ValueMember = "ID"; cobb_server.SelectedIndex = 0 ; }//winForm2里: public winForm1 wf1; private void 需要改变wf1的事件() { if (wf1 == null || wf1.IsDisposed) { } else { wf1.BindDDL(参数); } } public partial class Form2 : Form { //密码窗体 public Form2() { InitializeComponent(); } public delegate void mydelegate();//定义一个委托 public static event mydelegate myevent;//定义上诉委托类型的事件 private void button1_Click(object sender, EventArgs e) { if (myevent != null) { myevent(); } }C# code private void button2_Click(object sender, EventArgs e) { Form2 fm2 = new Form2(); Form2.myevent += new Form2.mydelegate(fm2_myevent); fm2.Show(); } private void Form1_Load(object sender, EventArgs e) { MessageBox.Show("你好"); } void fm2_myevent() { Form1_Load(null,null); } 这种问题可以考虑接口+事件。.net里有一个INotifyPropertyChanged接口,其背后是一种解决你遇到的问题的不错的模式,当然这种模式可能不适用于你的情况,但其思想是可以借鉴的。去MSDN,搜索这个接口的名字,你就知道怎么回事了。 这么多人都回答了啊最简单的就是form2调用form1的绑定数据方法,添加完新数据后调用form1的绑定方法即可 重新绑定是不行的.在另一个窗体里面做不到立即刷新出来. 你要重新运行那个窗体才出的来.time控制秒数是一种办法. 我也在纠结这个问题.我想知道委托怎么做. 单例模式怎么做.事件怎么做.楼主解决了? 解决了的话共享个给我把. 可以用DialogResult,form2添加完成后做个标记,再在form1中调用Load事件 求某个数是二的几次幂(int型) webBrowser的NewWindow事件,如何获取准确的url? C#读取配置文件的问题 ViewState的问题,我在同一个页面的usercontrol里引用该页面的另一个usercontrol里的ViewState,怎么得不到值? 问题请教 新人报道。。。请各位解决下偶的难题 关于ENA13条码的校验码问题 怎样学习C#~ SOS!!!一个简单问题,在线等 当击中listview的某一行时,如何取得当前这一行的subItem的值 请问泛型、集合 VS2008 DataSet.xsd 文件不能通过数据集编辑器进行编辑?
from2添加数据后触发from1数据更新
不行的。这是winform跟web的不一样的,这也是我纠结了半天的问题。
是第一种情况。但是我在绑定成功的时候,已经再次调用了form1的bind方法了啊。但是没反应的。要不我也不来论坛求救了。。
1。form2修改到数据库 关闭后 重新绑定 form1 2。form1 中写一个public方法 在form2关闭前 调用form1中的方法方法2 又有两种传递form1 的方法
1。form1 作为form2 的ower 传递过去
2。form2 中写一个 以form1 为参数的构造函数 初始化form2的时候就传递过去
绑定数据是到数据控件,清楚数据啊,然后重新绑定,怎么不能重新绑定呢?这个比web可好控制多了
你怎么打开的form2呢?没反应是你的bind方法的问题吧
{
string sql="select * from Rip_Role";
RolesList.DataSource = BLL.Promissions.ExecuteDatatable(sql, CommandType.Text, null);
} 下面的是在添加成功时的:
if (BLL.Promissions.ExecuteNonQuery(sql, CommandType.Text, parms)>0)
{
PermissionManager p = new PermissionManager();
p.BindList();
this.Close();
}
form2修改后 给form1一个委托事件
form1在事件中实现刷新
//winForm1里:
//绑定事件,我这是绑定到combobox
public void BindDDL(参数)
{
cobb_server.DataSource = Bl.LoadSSr(参数);
cobb_server.DisplayMember = "QdbIP";
cobb_server.ValueMember = "ID";
cobb_server.SelectedIndex = 0 ;
}
//winForm2里:
public winForm1 wf1; private void 需要改变wf1的事件()
{
if (wf1 == null || wf1.IsDisposed)
{ }
else { wf1.BindDDL(参数); }
}
public partial class Form2 : Form
{ //密码窗体
public Form2()
{
InitializeComponent();
}
public delegate void mydelegate();//定义一个委托
public static event mydelegate myevent;//定义上诉委托类型的事件
private void button1_Click(object sender, EventArgs e)
{
if (myevent != null)
{
myevent();
} }
C# code
private void button2_Click(object sender, EventArgs e)
{
Form2 fm2 = new Form2();
Form2.myevent += new Form2.mydelegate(fm2_myevent);
fm2.Show();
} private void Form1_Load(object sender, EventArgs e)
{
MessageBox.Show("你好");
}
void fm2_myevent()
{
Form1_Load(null,null);
}
time控制秒数是一种办法. 我也在纠结这个问题.我想知道委托怎么做. 单例模式怎么做.事件怎么做.
楼主解决了? 解决了的话共享个给我把.