【vc++精品源码栏目提醒】:以下是网学会员为您推荐的vc++精品源码-子窗口访问父窗口的数据元素 - 其它资料,希望本篇文章对您学习有所帮助。
假设我们需要点击主窗体 FMMain 中的某一个按钮时打开子窗体 FMChild 并将某一个值传给子窗体 FMChild,一般情况下,我们点击按钮显示子窗体 FMChild 的代码为:FMChild fmChild new FMChildfmChild.ShowDialogfmChild.Dispose如果我们需要将主窗体 FMMain 中的 string strValueA 的值传给 FMChild,那么我们首先对strValueA 进行如下处理:private string strValueApublic string StrValueAgetreturn strValueAsetstrValueA value使其成为主窗体 FMMain 的一个属性,接着修改显示子窗体的代码为以下两种的其中一种。
方法一:FMChild fmChild new FMChildfmChild.ShowDialogthisfmChild.Dispose方法二:FMChild fmChild new FMChildFMChild.Owner thisfmChild.ShowDialogfmChild.Dispose然后在修改子窗体 FMChild 中申明一个主窗体 FMMain 对象,FMMain fmMain在需要使用主窗体 FMMain 的 string strValueA 的地方加上如下代码:fmMain FMMainthis.Owner这样,就可以获得主窗体 FMMain 中 strValueA 的值了。
同样处理 string 如果你需要将子窗体 FMChild 中的 string strValueB 传给主窗体 FMMain,这时,strValueB。
private string strValueBpublic string StrValueBget return strValueB set strValueB value 那么你在关闭子窗体代码 fmChild.Dispose后,可以写一些代码来保存或者处理 FMChild 的strValueB,例如:string strTmp fmChild.StrValueB注意,在 Visual C智能设备 Pocket PC 2003 设备应用程序中显示子窗体 FMChild 只能使用:FMChild fmChild new FMChildFMChild.Owner thisfmChild.ShowDialogfmChild.Dispose在 Visual C智能设备 Pocket PC 2003 的设备应用程序中 ShowDialog没有重载。
C窗体间传值的几种方法 :Form1被调用窗体(子)调用窗体(父) :Form2方法 1: 所有权法//Form1://需要有一个公共的刷新方法public void Refresh_Method//.../在调用 Form2 时要把 Form2 的所有者设为 Form1Form2 f2 new Form2 f2.Owner thisf2.ShowDialog //Form2://在需要对其调用者(父)刷新时Form1 f1 f1 Form1this.Ownerf1.Refresh_Method 方法 2:自身传递法//Form1://需要有一个公共的刷新方法public void Refresh_Method//...Form2 f2 new Form2 f2.ShowDialogthis //Form2:private Form1 p_f1public Form2Form1 f1InitializeComponentp_f1 f1//刷新时p_f1.Refresh_Method 方法 3:属性法//Form1://需要有一个公共的刷新方法public void Refresh_Method//...//调用时Form2 f2 new Form2 f2.P_F1 thisForm2 f2 new Form2 f2.P_F1 thisf2.Show //Form2:private Form1 p_f1public Form1 P_F1getreturn p_f1setp_f1 value//刷新时p_f1.Refresh_Method 方法 4:委托法//声明一个委托public delegate void DisplayUpdate//Form1://需要有一个公共的刷新方法public void Refresh_Method//...//调用时Form2 f2 new Form2 f2.ShowUpdate new DisplayUpdateRefresh_Method f2.Show //Form2://声明事件public event DisplayUpdate ShowUpdate//刷新时,放在需要执行刷新的事件里ShowUpdateForm1 中放一个 Label1,一个 Button1,Form1 为主窗口,当点击 Button1 时,执行:Form2 f2 new Form2Form2 f2 new Form2f2.ShowDialogthisForm2 中放一个 TextBox1,一个 Button1,当点击 Button1 时执行:Form1 f1 Form1this.Ownerf1.Label1.Text this.TextBox1.Text注意:Form1 中的 label1 要设为 public用 C实现两个 WinForm 间的传值这个题目我曾经出给来公司面试的人,也曾经出给刚毕业的大学生,几乎是没有人会做啊。
难道这个问题真的这么难么?现在我给出实现的主要源代码(开发平台为 VC2005) 。
实现的思路: 从 Form1 传递到 Form2: 2 个窗体即两个类,两个窗体间的数据传送,可以采用构造函数来实现。
从 Form2 返回到 Form1,并传递数据:实例化 Form2 后,打 f2 用 ShowDialog方法,然后等待 f2 关闭时再回传数据到 Form1。
实现步骤及代码: 1:新建两个窗口: Form1Form2 2:打开 Form2,添加一个 textBox:textBox1;添加一个 Button:button1然后添加一个构造函数: //定义一个变量,用来传值。
public string returnValue public Form2string txtValue InitializeComponent this.textBox1.Text txtValue 然后在 button1 的单击事件中添加如下代码: private void button1_Clickobject sender EventArgs e 3:Form1 中添加一个 textBox:textBox1;添加一个 Button:button1然后在 button1的单击事件中添加如下代码: private void button1_Clickobject sender EventArgs e string txtValue this.textBox1.Text Form2 f2 new Form2txtValue 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.Runnew Form1 private void btnOpen_Clickobject sender System.EventArgs e Form2 frmnew Form2this 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 _parentFormnull public Form2 InitializeComponent public Form2Form parentForm InitializeComponent this._parentForm parentForm ........ private void button1_Clickobject sender System.EventArgs e Form1_parentForm.txtContent.Text this.txtValue .Text 一个小例子:将一个窗体下 TextBox 中的文本内容赋值给另一个窗体下的 ListView 中所对应的列。
方法如下:将 TextBox命名为 djzclx1所在窗体 Query_Djzclx .cs 设置一个属性private string Varvaluepublic string varvalueget return Varvalue//返回值 添加 button1,其 DialogResult 属性设置为 OK;然后在 button1 的单价事件里把 TextBOx 的值赋给 Varvalue(Varvaluedjzclx1) ,这样该窗体的属性 varvalue 就有 TExtBox 的值了。
在 ListView 所在窗体添加 button1,其单击事件添加如下代码:private void CkDjzclx_Clickobject sender EventArgs e Query_Djzclx newFrmDjzclx new Query_Djzclx//实例化对话框窗体 if newFrmDjzclx.ShowDialog DialogResult.OK// 如 果 对 话 框 窗 体 点 击 的DialogoResult 属性是“OK”的按钮 ListView.Text newFrmDjzclx.varvalue //这句的意思是这样,就是把属性varvalue 的值回传给 ListView。
上一篇:
利用地图图形数据建立ArcGIS数据库的方法研究
下一篇:
bc80e7a0-d1f2-4595-b21d-01a76798e87a