




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
假设我们需要点击主窗体FMMain中的某一个按钮时打开子窗体FMChild并将某一个值传给子窗体FMChild,一般情况下,我们点击按钮显示子窗体FMChild的代码为:FMChild fmChild = new FMChild();fmChild.ShowDialog();fmChild.Dispose(); 如果我们需要将主窗体FMMain中的string strValueA的值传给FMChild,那么我们首先对strValueA进行如下处理:private string strValueA;public string StrValueAget return strValueA; set strValueA = value; 使其成为主窗体FMMain的一个属性,接着修改显示子窗体的代码为以下两种的其中一种。方法一:FMChild fmChild = new FMChild();fmChild.ShowDialog(this);fmChild.Dispose(); 方法二:FMChild fmChild = new FMChild();FMChild.Owner = this;fmChild.ShowDialog();fmChild.Dispose(); 然后在修改子窗体FMChild中申明一个主窗体FMMain对象,FMMain fmMain; 在需要使用主窗体FMMain的string strValueA的地方加上如下代码:fmMain = (FMMain)this.Owner;这样,就可以获得主窗体FMMain中strValueA的值了。这时,如果你需要将子窗体FMChild中的string strValueB传给主窗体FMMain,同样处理string strValueB。private string strValueB;public string StrValueB get return strValueB; set strValueB = value; 那么你在关闭子窗体代码fmChild.Dispose();后,可以写一些代码来保存或者处理FMChild的strValueB,例如:string strTmp = fmChild.StrValueB; 注意,在Visual C#智能设备Pocket PC 2003设备应用程序中显示子窗体FMChild只能使用:FMChild fmChild = new FMChild();FMChild.Owner = this;fmChild.ShowDialog();fmChild.Dispose(); 在Visual C#智能设备Pocket PC 2003的设备应用程序中ShowDialog()没有重载。C#窗体间传值的几种方法调用窗体(父):Form1,被调用窗体(子):Form2方法1: 所有权法/Form1:/需要有一个公共的刷新方法public void Refresh_Method()/./在调用Form2时,要把Form2的所有者设为Form1Form2 f2 = new Form2() ;f2.Owner = this;f2.ShowDialog() ;/Form2:/在需要对其调用者(父)刷新时Form1 f1 ;f1 = (Form1)this.Owner;f1.Refresh_Method() ;方法2:自身传递法/Form1:/需要有一个公共的刷新方法public void Refresh_Method()/.Form2 f2 = new Form2() ;f2.ShowDialog(this) ;/Form2:private Form1 p_f1;public Form2(Form1 f1)InitializeComponent();p_f1 = f1;/刷新时p_f1.Refresh_Method() ;方法3:属性法/Form1:/需要有一个公共的刷新方法public void Refresh_Method()/./调用时Form2 f2 = new Form2() ;f2.P_F1 = this;Form2 f2 = new Form2() ;f2.P_F1 = this;f2.Show() ;/Form2:private Form1 p_f1;public Form1 P_F1getreturn p_f1;setp_f1 = value;/刷新时p_f1.Refresh_Method() ;方法4:委托法/声明一个委托public delegate void DisplayUpdate();/Form1:/需要有一个公共的刷新方法public void Refresh_Method()/./调用时Form2 f2 = new Form2() ;f2.ShowUpdate += new DisplayUpdate(Refresh_Method) ;f2.Show() ;/Form2:/声明事件public event DisplayUpdate ShowUpdate;/刷新时,放在需要执行刷新的事件里ShowUpdate();Form1中放一个Label1,一个Button1,Form1为主窗口,当点击Button1时,执行:Form2 f2 = new Form2();Form2 f2 = new Form2();f2.ShowDialog(this);Form2中放一个TextBox1,一个Button1,当点击Button1时执行:Form1 f1 = (Form1)this.Owner;f1.Label1.Text = this.TextBox1.Text;注意:Form1中的label1要设为public用C#实现两个WinForm间的传值这个题目我曾经出给来公司面试的人,也曾经出给刚毕业的大学生,几乎是没有人会做啊。难道这个问题真的这么难么?现在我给出实现的主要源代码(开发平台为VC#2005)。实现的思路: 从Form1传递到Form2: 2个窗体即两个类,两个窗体间的数据传送,可以采用构造函数来实现。 从Form2返回到Form1,并传递数据:实例化Form2后,打f2用ShowDialog()方法,然后等待f2关闭时再回传数据到Form1。实现步骤及代码: 1:新建两个窗口: Form1,Form2; 2:打开Form2,添加一个textBox:textBox1;添加一个Button:button1;然后添加一个构造函数: /定义一个变量,用来传值。 public string returnValue ; public Form2(string txtValue) InitializeComponent(); this.textBox1.Text = txtValue; 然后在button1的单击事件中添加如下代码: private void button1_Click(object sender, EventArgs e) 3:Form1中添加一个textBox:textBox1;添加一个Button:button1;然后在button1的单击事件中添加如下代码: private void button1_Click(object sender, EventArgs e) string txtValue = this.textBox1.Text; Form2 f2 = new Form2(txtValue); f2.ShowDialog(); this.textBox1.Text = f2.returnValue; Form1 中 (父窗口:) public class Form1 : System.Windows.Forms.Form private System.Windows.Forms.Button btnOpen; public System.Windows.Forms.TextBox txtContent; /注意是public . . STAThread static void Main() Application.Run(new Form1(); private void btnOpen_Click(object sender, System.EventArgs e) Form2 frm=new Form2(this); frm.ShowDialog(); Form2中(子窗口)Form2中(子窗口)public class Form2 : System.Windows.Forms.Form private System.Windows.Forms.Button button1; private System.Windows.Forms.TextBox txtValue; private Form _parentForm=null; public Form2() InitializeComponent(); public Form2(Form parentForm) InitializeComponent(); this._parentForm =parentForm; . private void button1_Click(object sender, System.EventArgs e) (Form1)_parentForm).txtContent.Text =this.txtValue .Text ; 一个小例子:将一个窗体下TextBox中的文本内容赋值给另一个窗体下的ListView中所对应的列。方法如下:将TextBox(命名为djzclx1)所在窗体Query_Djzclx .cs设置一个属性 private string Varvalue; public string varvalue get return Varvalue;/返回值 添加button1,其DialogResult属性设置为OK; 然后在button1的单价事件里把TextBOx的值赋给Varvalue(Varvalue=djzclx1;),这样该窗体的属性varvalue就有TExtBox的值了。 在ListView所在窗体添加button1,其单击事件添加如下代码: private void CkDjzclx_Click(object sender, Eve
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025广东房屋租赁合同范本官方版
- 第12课 健康文明地上网教学设计-2025-2026学年小学信息技术(信息科技)第2册鲁教版
- 鲁科版高中化学必修1第一章认识化学科学第2节 研究物质性质的方法和程序第2课时 教学设计1
- 二、保存网页中的图片说课稿-2025-2026学年小学信息技术粤教版四年级上册-粤教版
- 关于证券公司工作总结
- 地板施工与节能环保合同
- 独立担保合同在艺术品交易中的风险预防与合同保障
- 地砖施工与竣工验收合同范本
- 2025办公室租赁合同调整计划
- 民航企业代缴社保及航空安全协议
- 小学体育家长会课件
- 教育的人口功能
- 抗凝剂皮下注射技术临床实践指南2024版
- 中小学教辅材料征订管理制度
- 2025年芳香保健师(初级)职业技能鉴定理论考试真题解析试卷
- 2025年陕西省中考数学试题(原卷版)
- 腰椎管狭窄症病例讨论
- 二衬混凝土浇筑施工技术
- 2025至2030全球及中国护理教育行业项目调研及市场前景预测评估报告
- 培训课件的字体版权
- 注塑加工项目可行性研究报告
评论
0/150
提交评论