C# 父窗口调用子窗口方法,并保存子窗口数据至数据库(窗口传值)

wasion 2014-03-03 08:43:13
父窗口: Frm_Parent
点击button控件保存子窗口的数据至数据库

子窗口:
Frm_Child
控件有: textBox1.text
textBox2.text
textBox3.text
想法是:
子窗口是:
public Void SaveMethod()
{

string text1= this.textbox1.text ;
string text2 = this .textbox2.text ;
string text3 = this .textbox3.text ;
然后保存至数据库。
}

Frm_Parent 方法:
Frm_Child frmChild = new Frm_Child();
frmchild.SaveMethod();

问题是: 保存数据库 this.textbox1.text ;
this.textbox2.text ;
this.textbox3.text ;
该三个控件都输入数据,但是保存数据库都为空,请各位帮忙下。
...全文
473 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
衣舞晨风 2014-03-05
  • 打赏
  • 举报
回复
snipes 2014-03-04
  • 打赏
  • 举报
回复
google吧 网上winform窗体间传值的文章太多了。
小恒丶 2014-03-03
  • 打赏
  • 举报
回复
//声明委托 发布者 public delegate void Ad(string ss); //定义事件 public event Ad AddName; SaveMethod() { AddName( textBox1.text ) } 窗体1load ///窗体1的保存 AddName+=new ....(窗体2)..Ad(SendName); private void SendName(string ss) { ....具体做什么事。。就是你的窗体2的保存 ss就是我代码里面写的textbox1的值 }
dianjixue1 2014-03-03
  • 打赏
  • 举报
回复
引用 6 楼 yt_wasion 的回复:
断点调试发现string text1 = this.textbox1.text.tostring(); 这个text1 为空值,但是不知道理由呀。 我要在FrmParent 点击保存,然后再保存子窗口中FrmChild 中的数据。 帮帮忙呀。
你确定FrmChild的textbox1上是有值的吗?你确定打开的FrmChild窗口和你 Frm_Child frmChild = new Frm_Child(); frmchild.SaveMethod(); 方法中的这个frmChild是一个对象吗? 当你Frm_Child frmChild = new Frm_Child();的时候,是重新创建了一个Frm_Child对象,这个时候,上面的没有在 public Frm_Child()方法中赋值的控件的值都为空啊。。 你是按照我给你的例子中的代码写的吗?
wasion 2014-03-03
  • 打赏
  • 举报
回复
引用 3 楼 u011182647 的回复:
[quote=引用 2 楼 yt_wasion 的回复:] [quote=引用 1 楼 u011182647 的回复:] 委托 你可以看看就知道了
大哥 ,帮忙贴个代码解决下我现在的问题[/quote] 是你窗口一需要窗口2里面的textbox里面的数据吗??[/quote] 不是的,父窗口保存按钮,子窗口有个方法去保存子窗口数据,但是父窗口的点击保存后子窗口的数据为空值。
wasion 2014-03-03
  • 打赏
  • 举报
回复
引用 4 楼 dianjixue1 的回复:
Frm_Child frmChild = new Frm_Child(); frmchild.SaveMethod(); 刚初始化就调用方法,这个时候Frm_Child中textBox1、textBox2、textBox3中的值都为""啊,你断点调试进入Frm_Child中SaveMethod()方法试试。 这个可以把Frm_Child实例化放在Frm_Parent类中

public partial class Frm_Parent : Form
{
    Frm_Child frmChild = null;

    private void Frm_Parent_Load(object sender, EventArgs e)
    {
          frmChild = new Frm_Child();
          frmchild.Show();
    }

}
在打开的Frm_Child窗口中给textBox1、textBox2、textBox3赋值 然后单击Frm_Parent窗口中的按钮时

private void Button1_Click(object sender, EventArgs e)
{
   frmchild.SaveMethod();
}
断点调试发现string text1 = this.textbox1.text.tostring(); 这个text1 为空值,但是不知道理由呀。 我要在FrmParent 点击保存,然后再保存子窗口中FrmChild 中的数据。 帮帮忙呀。
小恒丶 2014-03-03
  • 打赏
  • 举报
回复
Frm_Child frmChild = new Frm_Child(); frmchild.SaveMethod(); 这里写错了 你new了一下 那么里面的数据就是没有了的。 所以你要frmChild .textbox1.text 获取到数据 然后再在你的父窗体里面写frmchild.SaveMethod();这个方法 委托都不需要。。
dianjixue1 2014-03-03
  • 打赏
  • 举报
回复
Frm_Child frmChild = new Frm_Child(); frmchild.SaveMethod(); 刚初始化就调用方法,这个时候Frm_Child中textBox1、textBox2、textBox3中的值都为""啊,你断点调试进入Frm_Child中SaveMethod()方法试试。 这个可以把Frm_Child实例化放在Frm_Parent类中

public partial class Frm_Parent : Form
{
    Frm_Child frmChild = null;

    private void Frm_Parent_Load(object sender, EventArgs e)
    {
          frmChild = new Frm_Child();
          frmchild.Show();
    }

}
在打开的Frm_Child窗口中给textBox1、textBox2、textBox3赋值 然后单击Frm_Parent窗口中的按钮时

private void Button1_Click(object sender, EventArgs e)
{
   frmchild.SaveMethod();
}
小恒丶 2014-03-03
  • 打赏
  • 举报
回复
引用 2 楼 yt_wasion 的回复:
[quote=引用 1 楼 u011182647 的回复:] 委托 你可以看看就知道了
大哥 ,帮忙贴个代码解决下我现在的问题[/quote] 是你窗口一需要窗口2里面的textbox里面的数据吗??
  • 打赏
  • 举报
回复
http://blog.csdn.net/chaoyangzhixue/article/details/17162885
porschee 2014-03-03
  • 打赏
  • 举报
回复
对这种情况我一般都用类模块中存储变量来解决,不管是单个的还是数组的
wasion 2014-03-03
  • 打赏
  • 举报
回复
引用 1 楼 u011182647 的回复:
委托 你可以看看就知道了
大哥 ,帮忙贴个代码解决下我现在的问题
小恒丶 2014-03-03
  • 打赏
  • 举报
回复
委托 你可以看看就知道了
leafmao 2014-03-03
  • 打赏
  • 举报
回复
Frm_Child frmChild = new Frm_Child(); frmchild.SaveMethod(); 如果这两句是连在一起的,中途未执行任何操作,这个时候子窗体都还未显示,textBox里也没有输入数据,那么调用SaveMethod方法也就不会有数据被保存
zm03173225 2014-03-03
  • 打赏
  • 举报
回复
把给子窗体控件赋值的代码卸载窗体装载FrmChild_Load的时候,这样再调用
BenBenBears 2014-03-03
  • 打赏
  • 举报
回复
很明显不是同一个对象。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧