vs2008 c#winform中一个ShowDialog的窗体调用前窗体的数据更新方法
我有一个窗体1,里面有个DataGridView控件,我写了一个公共的方法从数据库查出数据来绑定到这个控件。在窗体1的加载时候中我已经执行过这个方法使得DataGridV...
我有一个窗体1,里面有个DataGridView控件,我写了一个公共的方法从数据库查出数据来绑定到这个控件。在窗体1的加载时候中我已经执行过这个方法使得DataGridView控件已经存在数据给用户看!然后有一个按钮,按了之后用ShowDialog的方法来显示窗体2。我在窗体2主要是对数据进行一些修改工作,窗体2中有一个按钮点击之后修改数据库数据后并关闭这个窗口!我在窗口关闭事件FormClosed事件中初始化窗体1对象执行那个数据绑定方法,目的想实现DataGridView控件的数据为最新的数据库中的数据,但是DataGridView控件中的数据没改变,也没有报什么异常错误!请问要怎么才能实现这样的一个数据更新功能?
谢谢一楼的回答:但是还是有些问题的,首先方法2那里,传窗体的方法,用那种方法没报错,但是Form2本身里面设计的界面全部都变成空了的。就是一个新窗体了。。。
方法1,有一个错误
public delegate void AddItemPoolHandler();这一句是在哪里声明的?
它报的错误是:错误 1 找不到类型或命名空间名称“AddItemPoolHandler”(是否缺少 using 指令或程序集引用?) 展开
谢谢一楼的回答:但是还是有些问题的,首先方法2那里,传窗体的方法,用那种方法没报错,但是Form2本身里面设计的界面全部都变成空了的。就是一个新窗体了。。。
方法1,有一个错误
public delegate void AddItemPoolHandler();这一句是在哪里声明的?
它报的错误是:错误 1 找不到类型或命名空间名称“AddItemPoolHandler”(是否缺少 using 指令或程序集引用?) 展开
1个回答
展开全部
看你写的这么多,也确实不容易,表述的不清楚,大概知道你的意思,
这样可以用两种方法解决
1种是自定义事件,
2种就是传窗体,调用绑定方法
就给你两种方法的伪代码吧
假如你有两个窗体Form1,Form2, Form1里面有一个绑定datagridview 的方法Bind();
方法1:
在Form2窗体里 定义一个事件
public delegate void AddItemPoolHandler();
public partial class Form1: Form
{
public event AddItemPoolHandler OnaddItemPool = null;
}
在你修改数据的方法里面
private void UpdateButton_Click(object sender, EventArgs e)
{
if(修改数据成功)
{
if (OnaddItemPool != null)
{
OnaddItemPool();
}
}
}
From1窗体里 就是你在new出Form2的时候
From2 f = new From2 ();
f.OnaddItemPool += new AddItemPoolHandler(Bind);
f.ShowDialog()
///////////////////////////////////////////
第二种方法就是传窗体
From1窗体里 就是你在new出Form2的时候
From2 f = new From2 (this);
f.ShowDialog()
在Form2窗体里 实例化窗体Form1
public partial class Form2: Form
{
private Form1 f;
public Form2(Form1 f)
{
this.f=f;
}
}
在你修改数据的方法里面
private void UpdateButton_Click(object sender, EventArgs e)
{
if(修改数据成功)
{
f.Bind();
}
}
手写的,可能有错,大概意思是这样的。应该送分哦
这样可以用两种方法解决
1种是自定义事件,
2种就是传窗体,调用绑定方法
就给你两种方法的伪代码吧
假如你有两个窗体Form1,Form2, Form1里面有一个绑定datagridview 的方法Bind();
方法1:
在Form2窗体里 定义一个事件
public delegate void AddItemPoolHandler();
public partial class Form1: Form
{
public event AddItemPoolHandler OnaddItemPool = null;
}
在你修改数据的方法里面
private void UpdateButton_Click(object sender, EventArgs e)
{
if(修改数据成功)
{
if (OnaddItemPool != null)
{
OnaddItemPool();
}
}
}
From1窗体里 就是你在new出Form2的时候
From2 f = new From2 ();
f.OnaddItemPool += new AddItemPoolHandler(Bind);
f.ShowDialog()
///////////////////////////////////////////
第二种方法就是传窗体
From1窗体里 就是你在new出Form2的时候
From2 f = new From2 (this);
f.ShowDialog()
在Form2窗体里 实例化窗体Form1
public partial class Form2: Form
{
private Form1 f;
public Form2(Form1 f)
{
this.f=f;
}
}
在你修改数据的方法里面
private void UpdateButton_Click(object sender, EventArgs e)
{
if(修改数据成功)
{
f.Bind();
}
}
手写的,可能有错,大概意思是这样的。应该送分哦
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询