2个Form之间的datagridview数据运算 2个datagridview对应的是同一个Access文件里面的2个表现在我想把2个datagridview之间的数据在Form2里面进行四则运算。那么要怎么做呢?如果在打开Form1里面的datagridview输入数据后 且切换到Form2时此数据依然保存 那么又如何做捏~~?国际惯例~~满点送上~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 俺的.net 交流群是59714431 欢迎大家进来讨论这些问题。 我打广告.楼主不要删啊^_^ 不知道lz的具体意思,下面给个方法,可以在Form2中操作Form1中DataGridView里的数据.Form1中:将DataGridView设为public.打开Form2时:Form2 frmForm2 = new Form2();frmForm2.frmForm1 = this;frmForm2.show();Form2中:public Form1 frmForm1;此时在Form2中便可以进行如下操作:Messagebox.show(frmForm1.DataGridView.Rows[0].Cells[0].Value); 通过构造函数,属性,代理实现窗体数据传递FrmM: private void btn1_Click(object sender, EventArgs e) { FrmS fs = new FrmS(); fs.Owner = this; fs.ShowDialog(); }FrmS: private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e) { FrmM fm = (FrmM)this.Owner; fm.txt1.Text = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString(); this.Close(); }参考 4楼的这个是需要通过Button来实现的?可以不通过么? 我的意思就是在2个Form之间的2个dataGridView 对应的2个表 将dataGridView1里面的数据传递到dataGridView2里面进行运算、、 直接用SQL语句算好显示啊,计算的话直接从数据表里面取就行了 楼主舍本逐末了.既然两个GRID数据有联系把你要用的数据查出来放到一个GRID里不就完了? 按钮的点击事件中,通过SQL运算,然后把结果重新绑定到dataGridView2. 现在我想把2个datagridview之间的数据在Form2里面进行四则运算。 在SQL里做如果在打开Form1里面的datagridview输入数据后 且切换到Form2时此数据依然保存 那么又如何做捏~~?用构造函数传值Form1 上有TextBox1,Form 2上有TextBox2,要让TextBox2的值及时传到TextBox1上可以用构造函数实现。首先在Form1上点botton1 ,弹出 Form2在Form1.cs中Form2 f2 =new Form(this.TextBox1);在Form2.cs中public partial class From2: Form { private System.Windows.Forms.TextBox txtMiddle; public From2(TextBox heckbo) { InitializeComponent(); this.txtMiddle = heckbo; } private void textBox2_TextChanged(object sender, EventArgs e) { txtmiddle.Text = textBox2.Text; } }其中txtmiddle这个控件只是做个桥梁作用。就这样,通过改变textBox2的值就可以直接显示在from1中的textBox1上了 如果就想按你的思路实现,那就在form2中定义一个datagridview,然后构造时将form1的datagridview传进来,这样想怎么操作就怎么操作,随你了。 把两个from及其里面的datagrid的modifier属性设为public,那你就可互相访问了 2楼大大的frmForm1怎么定义的哦? 楼主,关键应该不是用不用Button来实现吧,你可以在程序里直接使用btn1_Click(null, null)来触发啊,反正没用到相关数据。 这个messagebox.show出来的结果就是。未处理的“System.NullReferenceException”类型的异常出现在 text.exe 中。未将对象引用设置到对象的实例。。 添加一个 public 字段 用于保存其中一个页面datagridview某项值 在另个页面中与目标datagridview对应项值相加 其实很简单:如下声明一个接口public interface IGrid{ /// <summary> /// 获取或设置form1的DataGridView /// </summary> DataGridView Form1Grid { get; set; } /// <summary> /// 获取或设置form2的DataGridView /// </summary> DataGridView Form2Grid { get; set; }}既然是form1打开form2那么在form1里实现这个接口class Grid : IGrid{ DataGridView form1Grid; DataGridView form2Grid; #region IGrid 成员 public DataGridView Form1Grid { get { return form1Grid; } set { form1Grid = value; } } public DataGridView Form2Grid { get { return form2Grid; } set { form2Grid = value; } } #endregion}然后在form2里为构造函数添加IGrid参数 public Form2(IGrid grid) { InitializeComponent(); grid.Form2Grid = this.dataGridView1; }并为form1声明接口IGrid grid;最后在form1打开form2的事件中设置gridgrid = new Grid();//实例化grid = this.dataGridView1;//与form1的dataGridView1相关联Form2 a = new Form2(grid);//打开form2,并与form2的dataGridView1相关联现在就可以通过grid的Form1Grid和Form1Grid的属性控制两个窗口的DataGridView了(在任意一个窗口都可以控制)在编辑form1的DataGridView回触发事件,在事件中利用grid即可控制form2的DataGridView grid = this.dataGridView1;//与form1的dataGridView1相关联 这句话应该是grid.Form1Grid = this.dataGridView1; 4L的怎么弄都是fm.txt1.Text = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString(); 未将对象引用设置到对象的实例。23楼的、、看不懂。。 假定输入数据的form名为formInput,里面有一个输入数据用的datagridview名为inputGrid,做四则运算的form名为formSum,里面有个显示运算结果的datagridview名为sumGrid。按我的理解就是在formInput里的inputGrid输入数据后,将结果显示在sumGrid里。思路就是将inputGrid传递给formSum里,然后在formSum订阅输入数据时的事件,并在事件中处理sumGrid的要显示的数据。假设楼主是用CellEndEdit事件(编辑单元格结束后引发的事件)操作如下: public FormSum(DataGridView inputGrid) { InitializeComponent(); formInputGrid = inputGrid; //获得formInput的inputGrid的引用,操作formInputGrid即可操作inputGrid。 formInputGrid.CellEndEdit += new DataGridViewCellEventHandler(formInputGrid_CellEndEdit); //订阅inputGrid的CellEndEdit 事件 } DataGridView formInputGrid; void formInputGrid_CellEndEdit(object sender, DataGridViewCellEventArgs e) { //在此处理编辑inputGrid的单元格结束后的操作 //通过参数e的属性可以获得操作单元格的行和列, }在实例化formSum时要将inputGrid传递进去。 C#中 多个form之间的切换,信息丢失问题!!!急急急 在程序中,正则中的引号如何处理? onmousemove的主调函数是谁? 一个比较牛的加密算法 (转载的请高手解释一下) C# 焦点问题 如何在添加ContextMenuStrip 急:求助,如何实现"上传文件"只是局部刷新 怎样用C#实现数据的发送与接收? 求助:CopyFromRecordset方法到 ADO.NET 在C# 环境该如何做? VS 2008 的Remoting自定义通道里能不能支持串口通讯啊? 怎么用VS2008编译C#类 C#中如何关闭正在侦听的异步socket
我打广告.楼主不要删啊^_^
Form1中:
将DataGridView设为public.
打开Form2时:
Form2 frmForm2 = new Form2();
frmForm2.frmForm1 = this;
frmForm2.show();Form2中:
public Form1 frmForm1;此时在Form2中便可以进行如下操作:
Messagebox.show(frmForm1.DataGridView.Rows[0].Cells[0].Value);
FrmM:
private void btn1_Click(object sender, EventArgs e)
{
FrmS fs = new FrmS();
fs.Owner = this;
fs.ShowDialog();
}
FrmS:
private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
FrmM fm = (FrmM)this.Owner;
fm.txt1.Text = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();
this.Close();
}参考
把你要用的数据查出来放到一个GRID里不就完了?
Form1 上有TextBox1,Form 2上有TextBox2,要让TextBox2的值及时传到TextBox1上可以用构造函数实现。首先在Form1上点botton1 ,弹出 Form2在Form1.cs中Form2 f2 =new Form(this.TextBox1);在Form2.cs中public partial class From2: Form
{ private System.Windows.Forms.TextBox txtMiddle; public From2(TextBox heckbo)
{
InitializeComponent();
this.txtMiddle = heckbo;
} private void textBox2_TextChanged(object sender, EventArgs e)
{
txtmiddle.Text = textBox2.Text;
}
}其中txtmiddle这个控件只是做个桥梁作用。就这样,通过改变textBox2的值就可以直接显示在from1中的textBox1上了
2楼大大的frmForm1怎么定义的哦?
这个messagebox.show出来的结果就是。
未处理的“System.NullReferenceException”类型的异常出现在 text.exe 中。
未将对象引用设置到对象的实例。。
声明一个接口
public interface IGrid
{
/// <summary>
/// 获取或设置form1的DataGridView
/// </summary>
DataGridView Form1Grid { get; set; } /// <summary>
/// 获取或设置form2的DataGridView
/// </summary>
DataGridView Form2Grid { get; set; }
}既然是form1打开form2
那么在form1里实现这个接口
class Grid : IGrid
{ DataGridView form1Grid; DataGridView form2Grid; #region IGrid 成员 public DataGridView Form1Grid
{
get
{
return form1Grid;
}
set
{
form1Grid = value;
}
} public DataGridView Form2Grid
{
get
{
return form2Grid;
}
set
{
form2Grid = value;
}
} #endregion
}然后在form2里为构造函数添加IGrid参数
public Form2(IGrid grid)
{
InitializeComponent();
grid.Form2Grid = this.dataGridView1;
}并为form1声明接口
IGrid grid;最后在form1打开form2的事件中设置grid
grid = new Grid();//实例化
grid = this.dataGridView1;//与form1的dataGridView1相关联
Form2 a = new Form2(grid);//打开form2,并与form2的dataGridView1相关联现在就可以通过grid的Form1Grid和Form1Grid的属性控制两个窗口的DataGridView了(在任意一个窗口都可以控制)
在编辑form1的DataGridView回触发事件,在事件中利用grid即可控制form2的DataGridView
这句话应该是grid.Form1Grid = this.dataGridView1;
做四则运算的form名为formSum,里面有个显示运算结果的datagridview名为sumGrid。
按我的理解就是在formInput里的inputGrid输入数据后,将结果显示在sumGrid里。
思路就是将inputGrid传递给formSum里,然后在formSum订阅输入数据时的事件,并在事件中处理sumGrid的要显示的数据。
假设楼主是用CellEndEdit事件(编辑单元格结束后引发的事件)
操作如下:
public FormSum(DataGridView inputGrid)
{
InitializeComponent();
formInputGrid = inputGrid; //获得formInput的inputGrid的引用,操作formInputGrid即可操作inputGrid。
formInputGrid.CellEndEdit += new DataGridViewCellEventHandler(formInputGrid_CellEndEdit); //订阅inputGrid的CellEndEdit 事件 } DataGridView formInputGrid; void formInputGrid_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
//在此处理编辑inputGrid的单元格结束后的操作
//通过参数e的属性可以获得操作单元格的行和列,
}在实例化formSum时要将inputGrid传递进去。