c# form1 form2 form3中,form3如何刷新form1?全部非父子窗体。要具体的代码,谢谢
3个窗体form1,form2,form3。form1为主窗体,启动程序,先进入form1,也是程序一直运行的窗体。form1如下:有一个combobox,一个datag...
3个窗体form1, form2, form3。
form1为主窗体,启动程序,先进入form1,也是程序一直运行的窗体。
form1如下:
有一个combobox,一个datagridview,一个treeview,一个button。前3项都是通过dataset读取access数据库内容绑定的数据,button是打开form2的按钮。其中有3个方法,分别刷新这3个控件。
form2如下:
一个datagridview,一个button按钮,这个datagridview中的内容和form1中的combobox里面绑定的内容是一致的。就是一个分类管理的窗体,button按钮是新建分类,也就是打开form3窗体。
form3如下:
一个textbox,和一个button按钮。点击button,将把textbox中的内容加入到数据库access中。
问题是:如果在form3中点击button按钮,写入access数据库后,可以刷新form1主窗体内的treeview,datagridview以及combobox。 谢谢。 展开
form1为主窗体,启动程序,先进入form1,也是程序一直运行的窗体。
form1如下:
有一个combobox,一个datagridview,一个treeview,一个button。前3项都是通过dataset读取access数据库内容绑定的数据,button是打开form2的按钮。其中有3个方法,分别刷新这3个控件。
form2如下:
一个datagridview,一个button按钮,这个datagridview中的内容和form1中的combobox里面绑定的内容是一致的。就是一个分类管理的窗体,button按钮是新建分类,也就是打开form3窗体。
form3如下:
一个textbox,和一个button按钮。点击button,将把textbox中的内容加入到数据库access中。
问题是:如果在form3中点击button按钮,写入access数据库后,可以刷新form1主窗体内的treeview,datagridview以及combobox。 谢谢。 展开
展开全部
可以用委托,
在Form3,定义
public delegate void MyDelegate(string Sr); //定义该委托的事件
再定义
public event MyDelegateSign MyEventSign;
在Form3,的关闭事件里写
private void Setting_FormClosing(object sender, FormClosingEventArgs e)
{
MyEventSign(this.textBox1.Text);
}
再在Form1,定义一个事件
Form3 frm=new Form3();
frm.MyEventSign += new MyDelegateSign(set_MyEventSign);//注册form3_MyEvent方法的MyEvent事件
frm.Show();
}
void set_MyEventSign(string sr)//将签名与输入法回调
{
TextBox1.Text=sr;//如此就通过Form3的TextBoxt1刷新了Form1的TextBox1
}
在Form3,定义
public delegate void MyDelegate(string Sr); //定义该委托的事件
再定义
public event MyDelegateSign MyEventSign;
在Form3,的关闭事件里写
private void Setting_FormClosing(object sender, FormClosingEventArgs e)
{
MyEventSign(this.textBox1.Text);
}
再在Form1,定义一个事件
Form3 frm=new Form3();
frm.MyEventSign += new MyDelegateSign(set_MyEventSign);//注册form3_MyEvent方法的MyEvent事件
frm.Show();
}
void set_MyEventSign(string sr)//将签名与输入法回调
{
TextBox1.Text=sr;//如此就通过Form3的TextBoxt1刷新了Form1的TextBox1
}
追问
非常感谢您的回复,我把具体的情况在我的问题中再详细的介绍下,麻烦您有时间帮我看下。
追答
你会读取数据库吧?就假设你会, 就是下面这个方法。DisplayData();
在Form1或者Form2,加入以下代码。
SqlCommand PersonalInformation; //声明一个执行SQL语句的对象
#region 创建子窗体的CreateFrmChild方法
public void CreateFrmChild()
{
Frm_Child BabyWindow = new Frm_Child();//实例化一个子窗体
BabyWindow.MdiParent = this;//设置子窗体的父窗体为当前窗体
this.dataGridView1.Controls.Add(BabyWindow);//在DataGridView控件中添加子窗体
BabyWindow.UpdateDataGridView += new EventHandler(BabyWindow_UpdateDataGridView);
BabyWindow.Show();//显示子窗体
}
void BabyWindow_UpdateDataGridView(object sender,EventArgs e)
{
if(ConnPubs.State == ConnectionState.Closed) //当数据库处于关闭状态时
{
ConnPubs.Open(); //打开数据库
}
string InsertString = "insert into tb_User values('" + Frm_Child.idContent + "','" + Frm_Child.nameContent + "','" + Frm_Child.phoneContent + "','" + Frm_Child.addressContent + "')";//定义一个插入数据的字符串变量
PersonalInformation = new SqlCommand(InsertString,ConnPubs);//执行插入数据库字段
PersonalInformation.ExecuteNonQuery();//执行SQL语句并返回受影响的行数
ConnPubs.Close(); //关闭数据库
DisplayData(); //显示更新后的数据
MessageBox.Show("数据添加成功!","提示信息",MessageBoxButtons.OK,MessageBoxIcon.Asterisk);//弹出添加成功的提示信息
}
}
#endregion
——————————————————————————————
回复 380282341:protected void UpdateData()
{
if(UpdateDataGridView != null)//当触发更新DataGridView事件时
{
UpdateDataGridView(this,EventArgs.Empty);//更新DataGridView控件中的内容
}
}
这样就好了。剩下的你自己看看吧。
展开全部
form3如何刷新form1?
你先说说这句话的意思。
------------
楼下的所言很对。不过还有简单的,就是用showdialog
在关闭事件中刷新。
你先说说这句话的意思。
------------
楼下的所言很对。不过还有简单的,就是用showdialog
在关闭事件中刷新。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以在form1里面写一个公有方法如A,方法中实现让控件从数据库中加载你要展示数据,在form3的button click事件下把数据写入access数据库,并调用form1中的A方法就可以了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询