问过好几次的问题了,没人能回答,望高手赐教呀! 修改DataSet后,将dataGrid重新绑定不可以吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 //新建小窗口的实例frmPop frm=new frmPop(...);frm.ShowDialog();this.someVar = frm.result;//小窗口中的属性result 我做论坛时,有过类似的操作看看这里的许多弹出窗口,都有返回值,或许可以参考http://www.xlfancy.com (自我广告) 1:你把DataGrid的数据源DataGrid.DataSource用一个属性公开如下(设为DataTable:public DataTable dgDataSource{ get { return this.DataGrid.DataSource; } set { this.DataGrid.DataSource=value; }}2:在要弹出的窗体中加一个对第一个窗体的引用如下:private TypeOfTheFirstForm m_parentForm;public TypeOfTheFirstForm PForm{ get { return this.m_parentForm; } set { this.m_parentForm=value; }}3:在第一个窗体要弹出第二个窗体的时候如下:PopuForm f=new PopuForm()f.PForm=this;f.ShowDialog();4:这样的话就可以在第二个窗体里访问并修改第一个窗体里的DataGrid了,改DataSource的同时DataGrid会自动更新的,这个你不用管就是了.你也可以在第二个窗体里加一个属性这个话你可以如下在第一个窗体:PopuForm f=new PopuForm()f.ShowDialog();this.DataGrid.DataSource.Rows[i][i]=f.SomeProperty等等,方法多多,不知道是你是你想要的,楼主都四个角了,这个不难吧. winform 当DataGrid数据源发生改变后,DataGrid获得焦点时会自动刷新,webform不可以。。 在小窗口里面声明public Form1 xx;在弹出小窗口的时候这样写//新建小窗口的实例frmPop frm=new frmPop(...);frm.xx = this; //住重要关键的依据,相当于把小窗口的xx对象指向主窗体,以后对xx的操作就等同于对主窗体的操作frm.ShowDialog();你可以这样在小窗口里面访问主窗口的控件xx.dataGrid1当然这儿涉及到的所有夸窗口访问的东西都要设置为Public属性 子form, 你可以定义两个参数在 子form的构造函数里, 一个是System.windows.Form.DataGrid,一个是System.Data.DataSet, 然后在你的主form里调用,传递 主form的dataGrid,和dataGrid绑定的dataSet 调用:Form form = new Form( this, this.dataGrid, this.dataSet )然后在子form的Closing事件里改变dataSet的值,重新绑定dataGrid.这个只是个思路,应该可以实现,自己试试 呵呵,自己试了一下,可以实现;这里是主form的调用:Form3 form = new Form3( this.dataGrid1, this.dataSet );form.Show();这个是子form,你可以用其他事件触发来替代closing事件!/// <summary> /// Form3 的摘要说明。 /// </summary> public class Form3 : System.Windows.Forms.Form { private System.Windows.Forms.TextBox textBox1; public System.Windows.Forms.DataGrid dataGrid; public System.Data.DataSet dataSet; /// <summary> /// 必需的设计器变量。 /// </summary> private System.ComponentModel.Container components = null; public Form3( System.Windows.Forms.DataGrid dataGrid, System.Data.DataSet dataSet ) { // // Windows 窗体设计器支持所必需的 // InitializeComponent(); this.dataGrid = dataGrid; this.dataSet = dataSet; // // TODO: 在 InitializeComponent 调用后添加任何构造函数代码 // }private void Form3_Closing(object sender, System.ComponentModel.CancelEventArgs e){ foreach( DataRow dr in this.dataSet.Tables[0].Rows ) { dr[1] = this.textBox1.Text; } this.dataGrid.DataSource = dataSet; this.dataGrid.Refresh();} 多谢多谢,呵呵,我试一下!顺便帮我也看看这个问题http://community.csdn.net/Expert/topic/3093/3093319.xml?temp=.2678339 http://www.csdn.net/Develop/read_article.asp?id=26433http://www.csdn.net/Develop/read_article.asp?id=26434http://www.csdn.net/Develop/read_article.asp?id=26436 如何生成EXE程序? 掌风贴 请不要点 ADO.NET连接数据库出现 未与信任 SQL Server 连接相关联错误 委托 为了实现P2P,在Visual C# 2005中想实现用Media Player一段影片,就是服务器传输过来的字节段 怎么用Reflector 反编译别人用C#.net做的整个项目,(项目只有安装的setup)?急!!知道请回答 已知文件名,获得它的路径 打听个事~~~ 寻求.NET软件测试人员/对.NET感兴趣的朋友 一个关于类型转换的菜鸟问题!! 如何判断DataSet里面是否有数据? 哪位朋友可以给我一个比较好的 数据访问控件啊?
frmPop frm=new frmPop(...);
frm.ShowDialog();
this.someVar = frm.result;//小窗口中的属性result
public DataTable dgDataSource
{
get
{
return this.DataGrid.DataSource;
}
set
{
this.DataGrid.DataSource=value;
}
}
2:在要弹出的窗体中加一个对第一个窗体的引用如下:
private TypeOfTheFirstForm m_parentForm;
public TypeOfTheFirstForm PForm
{
get
{
return this.m_parentForm;
}
set
{
this.m_parentForm=value;
}
}
3:在第一个窗体要弹出第二个窗体的时候如下:
PopuForm f=new PopuForm()
f.PForm=this;
f.ShowDialog();
4:这样的话就可以在第二个窗体里访问并修改第一个窗体里的DataGrid了,改DataSource的同时DataGrid会自动更新的,这个你不用管就是了.
你也可以在第二个窗体里加一个属性这个话你可以如下在第一个窗体:
PopuForm f=new PopuForm()
f.ShowDialog();
this.DataGrid.DataSource.Rows[i][i]=f.SomeProperty等等,方法多多,不知道是你是你想要的,楼主都四个角了,这个不难吧.
public Form1 xx;
在弹出小窗口的时候这样写
//新建小窗口的实例
frmPop frm=new frmPop(...);
frm.xx = this; //住重要关键的依据,相当于把小窗口的xx对象指向主窗体,以后对xx的操作就等同于对主窗体的操作
frm.ShowDialog();你可以这样在小窗口里面访问主窗口的控件
xx.dataGrid1当然这儿涉及到的所有夸窗口访问的东西都要设置为Public属性
一个是System.windows.Form.DataGrid,一个是System.Data.DataSet,
然后在你的主form里调用,传递 主form的dataGrid,和dataGrid绑定的dataSet
调用:Form form = new Form( this, this.dataGrid, this.dataSet )
然后在子form的Closing事件里改变dataSet的值,重新绑定dataGrid.
这个只是个思路,应该可以实现,自己试试
这里是主form的调用:
Form3 form = new Form3( this.dataGrid1, this.dataSet );
form.Show();这个是子form,你可以用其他事件触发来替代closing事件!
/// <summary>
/// Form3 的摘要说明。
/// </summary>
public class Form3 : System.Windows.Forms.Form
{
private System.Windows.Forms.TextBox textBox1;
public System.Windows.Forms.DataGrid dataGrid;
public System.Data.DataSet dataSet;
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null; public Form3( System.Windows.Forms.DataGrid dataGrid, System.Data.DataSet dataSet )
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent(); this.dataGrid = dataGrid;
this.dataSet = dataSet; //
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}private void Form3_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
foreach( DataRow dr in this.dataSet.Tables[0].Rows )
{
dr[1] = this.textBox1.Text;
} this.dataGrid.DataSource = dataSet;
this.dataGrid.Refresh();
}
http://www.csdn.net/Develop/read_article.asp?id=26434
http://www.csdn.net/Develop/read_article.asp?id=26436