C#两个窗口互相调用问题 ,以实现数据保存

我在form1中定义了个datatable作为缓存数据库,然后想在点击保存按钮是,跳到form2中,并将数据保存到sql数据库中,publicpartialclassFo... 我在form1中定义了个datatable作为缓存数据库,然后想在点击保存按钮是,跳到form2中,并将数据保存到sql数据库中,
public partial class Form1 : Form
{
DataTable mytable = new DataTable("datacurrent");
·········//另外的都省略了
}
然后在form2中为什么不能直接调用form2.myable呢?
展开
 我来答
zhouxiang_1216
2013-05-11 · TA获得超过2591个赞
知道大有可为答主
回答量:1286
采纳率:33%
帮助的人:1378万
展开全部
1、把它定义为全局静态变量就可以在其它窗体中直接调用了,没必要传递窗体:
定义:public static DataTable mytable=new DataTable("datacurrent");
调用:from1.mytable........

2、直接把它放到窗体的构造函数中传递到新窗体,比如你说的form2:
新窗体的构造函数:public form2(DataTable dt)
获取新窗体的实例:form2 form=new form2(mytable);

希望对你有帮助,还有疑问请追问或是Hi
追问
嗯,我试过第一种方法了,可以的,我想问一下定义为全局静态变量后为什么就可以在其他窗体中调用了呢?
追答
这个只是一个习惯性的称呼,严格来说是不对的。它其实就是form1这个类中的一个字段,定义为了public,所以能够在其它的类中调用;定义为了static,所以能够以“类名+名称”这种方式来调用,要不就得用“实例名+名称”这种方式来调用,显然第二种调用方式在这里不合适(不是不能用,而是更麻烦一些),希望对你有帮助。
精神小伙喵
2013-05-10 · TA获得超过684个赞
知道小有建树答主
回答量:746
采纳率:50%
帮助的人:729万
展开全部
因为这个变量是个局部变量,
你要想调用这个变量就要设置为全局的,放在方法的外面

如果想在form2中调用form1中的变量,那么你要在打开Form2的时候,要把Form1当作参数传过去,,就可以调取form1中的全局变量了,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Onewarden
2013-05-10 · TA获得超过327个赞
知道小有建树答主
回答量:145
采纳率:100%
帮助的人:143万
展开全部

在Form1的单击事件中写如下代码:

private void button1_Click(object sender, EventArgs e)
{
new Form2().Show(this);
}

在Form2中

Form1 owner = (Form1)this.Owner;

通过owner来获取mytable,还有重要的一点,把mytable的访问修饰符改成protected或public!

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式