大家好,求教如何在一窗体更新另一窗体的数据集 首先在a中定义显示数据的公共方法,然后在窗体B中声明一个窗体a的对象,把创建的a传递过去,在b中调用a的公共方法....forma a = new forma();b.frma = a;b.show;a.showData();... 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 把要控制的那个数据定义为public ,也可以加static 那样就可以直接form1[窗口名].dataset[数据名]访问 首先要A窗口与B窗口中的数据源是邦定同一个数据源就行,对象类型是地址引用可定义一个public static的数据集(或者一个数据源)只要二个窗口邦定同一个数据源就可以同步数据显示 把要控制的那个数据定义为public ,也可以加static 那样就可以直接form1[窗口名].dataset[数据名]访问不过也不好同步啊我试过的各位给个具体的代码我看看我基本上上面的方法都试过 将另一窗口的相关变量设置成public 如public DataGrid datagrid1; 将另一窗口的相关变量设置成public 如public DataGrid datagrid1这样可以访问datagrid,但是不可以即时更新 新建一个类,包含 一个静态的方法,返回public dataset ,系统公用:public dataset ReturnDS (){} a窗体的DBGRID刷新一下就可以了 问题关键是在构造Form2对象时把Form1中的dataSet11和sqlDataAdapter1对象传递给Form2对象,传递通道是Form2的构造函数的参数,我的小程序的关键代码如下://双击Form1的DataGrid启动Form2. private void dataGrid1_DoubleClick(object sender, System.EventArgs e) { Form2 F2=new Form2(dataSet11,sqlDataAdapter1); F2.Show(); }//Form2的构造函数.public Form2(System.Data.DataSet DS,System.Data.SqlClient.SqlDataAdapter DA) { dataSet11=DS; //变量dataSet在Form2中定义. sqlDataAdapter=DA; //变量sqlDataAdapter在Form2中定义. InitializeComponent(); }//Form2的添加响应函数.private void button1_Click(object sender, System.EventArgs e) { System.Data.DataTable table=dataSet.Tables[0]; System.Data.DataRow row=table.NewRow(); row[0]=textBox1.Text; row[1]=textBox2.Text; row[2]=textBox3.Text; ...... table.Rows.Add(row); sqlDataAdapter.Update(dataSet,"tablename"); }// 在Form2里面定义Public Form1 mainFrom;在Form1里面生成Form的时候如下Form2 form2 = new Form2();form2.mainFrom = this;form2.visible = true;这样在Form2里面就可以通过操作Form1里面的数据和控件比如Form1里面有个dataSet1,Form2里面有个dataGrid1在Form2里面就可以用Form1里面的dataSet1来填充Form2的dataGrid1dataGrid1.DataSource = mainForm.dataSet1;思路就不用说了吧,这么简单,form2.mainFrom = this;就相当于生成了一个主窗体的引用而已 感觉上13880079673(CMonkey的 方法不错Form2 form2 = new Form2();form2.mainFrom = this;form2.visible = true;我一定好好体会 回复人: skydaxia() ( ) 信誉:100 2004-01-14 20:13:00 得分:0 上面这种方法可以填充数据但是不能同步所以不是上佳的方法 我觉得你说的很奇怪呢,form2.mainFrom = this;后,实际上mainFrom就等同于主窗体了,mainFrom只不过是主窗体的别名,在子窗体和主窗体内任何对mainFrom的修改都会产生相同的结果,也就是说改变了mainFrom就是改变了主窗体,你还有什么理由认为他们不能同步 的确,这样做是也把数据添加合修改到数据库中,但是我要得是这边加一条记录,另外得一个窗体马上就显示这天记录,所谓得即时反映。比如我在窗体2里面加有这么一个按钮,她能够控制窗体一上得datagrid使得她能够指向哪一行。 有两个窗体,form1,form2在form1 中button的click事件中写 Form2 myForm2= new Form2(); myForm2.Show(); myForm2.button1.Text="test from form";(//可以修改要打开的form2的值) myForm2.myForm1=this; //这个是最重要的,传递引用,在form2中,必须的定义一个form1类型的变量public Form1 myForm1测试通过 怎么设置chart的X轴的值 帮帮我看个小问题 为什么CRC的算法每个算出来的都不一样的? c/s 架构的服务端的问题 知道用友 金蝶 之类的请进 如何让无边框的窗体的四个角变成圆角? 小弟初学.net,有几个问题请教 请大家帮忙啊,很急,treeview问题 c# 对消息列队系统的访问被拒绝(权限问题) 怎样将数据库中某字段的值与窗体控件内容(如textBox)进行等值比较? 再问个问题,随能给我一个用.Net写的发Email的程序,要有安全认证的谢了。 为什么try{}不起作用了?很急!支援! 我做了一个项目,用act怎么测试呢?
可定义一个public static的数据集(或者一个数据源)
只要二个窗口邦定同一个数据源就可以同步数据显示
不过也不好同步啊
我试过的
各位给个具体的代码我看看
我基本上上面的方法都试过
这样可以访问datagrid,但是不可以即时更新
public dataset ReturnDS ()
{}
private void dataGrid1_DoubleClick(object sender, System.EventArgs e)
{
Form2 F2=new Form2(dataSet11,sqlDataAdapter1);
F2.Show();
}
//Form2的构造函数.
public Form2(System.Data.DataSet DS,System.Data.SqlClient.SqlDataAdapter DA)
{
dataSet11=DS; //变量dataSet在Form2中定义.
sqlDataAdapter=DA; //变量sqlDataAdapter在Form2中定义.
InitializeComponent();
}//Form2的添加响应函数.
private void button1_Click(object sender, System.EventArgs e)
{
System.Data.DataTable table=dataSet.Tables[0];
System.Data.DataRow row=table.NewRow();
row[0]=textBox1.Text;
row[1]=textBox2.Text;
row[2]=textBox3.Text;
......
table.Rows.Add(row);
sqlDataAdapter.Update(dataSet,"tablename"); }//
Public Form1 mainFrom;在Form1里面生成Form的时候如下
Form2 form2 = new Form2();
form2.mainFrom = this;
form2.visible = true;这样在Form2里面就可以通过操作Form1里面的数据和控件
比如Form1里面有个dataSet1,Form2里面有个dataGrid1
在Form2里面就可以用Form1里面的dataSet1来填充Form2的dataGrid1
dataGrid1.DataSource = mainForm.dataSet1;思路就不用说了吧,这么简单,form2.mainFrom = this;就相当于生成了一个主窗体的引用而已
Form2 form2 = new Form2();
form2.mainFrom = this;
form2.visible = true;
我一定好好体会
上面这种方法可以填充数据
但是不能同步
所以不是上佳的方法
我觉得你说的很奇怪呢,form2.mainFrom = this;后,实际上mainFrom就等同于主窗体了,mainFrom只不过是主窗体的别名,在子窗体和主窗体内任何对mainFrom的修改都会产生相同的结果,也就是说改变了mainFrom就是改变了主窗体,你还有什么理由认为他们不能同步
Form2 myForm2= new Form2();
myForm2.Show();
myForm2.button1.Text="test from form";(//可以修改要打开的form2的值)
myForm2.myForm1=this; //这个是最重要的,传递引用,在form2中,必须的定义一个form1类型的变量
public Form1 myForm1测试通过