C#窗体间传值技术详解

需积分: 10 7 下载量 116 浏览量 更新于2024-10-22 收藏 30KB DOC 举报
“C#窗体传值的方法总结,主要涉及如何在C#的窗口之间传递数据,包括在主窗体FMMain与子窗体FMChild之间的数据交互。” 在C#编程中,窗体间的通信是常见的操作,尤其是在设计用户界面时。本资源总结了两种在C#窗体间传递值的方法,特别是针对主窗体FMMain向子窗体FMChild传递值以及从子窗体回传值到主窗体的情况。 1. **方法一:使用`ShowDialog(this)`** 在这种方法中,当你创建并显示子窗体时,通过传递`this`作为参数给`ShowDialog()`方法,这将设置子窗体的`Owner`属性为主窗体。这样,子窗体就有了对父窗体的引用,从而可以访问其公共属性。在主窗体中,你需要先定义一个公开的属性(如`StrValueA`),然后在创建子窗体并显示它时,调用`ShowDialog(this)`: ```csharp FMChild fmChild = new FMChild(); fmChild.ShowDialog(this); // 将'this'作为参数传递 fmChild.Dispose(); ``` 在子窗体中,你可以通过`Owner`属性访问主窗体并获取或设置属性值: ```csharp FMMain fmMain = (FMMain)this.Owner; string strValueFromParent = fmMain.StrValueA; ``` 2. **方法二:设置`Owner`属性** 这种方法与上一种类似,但不直接在`ShowDialog()`调用中传递`this`。相反,你需要在创建子窗体后,显式地设置其`Owner`属性: ```csharp FMChild fmChild = new FMChild(); FMChild.Owner = this; // 设置Owner属性 fmChild.ShowDialog(); fmChild.Dispose(); ``` 子窗体的访问方式与方法一相同。 3. **从子窗体传值回主窗体** 当你需要在子窗体中改变一个值并传递回主窗体时,同样需要在子窗体中定义一个公开属性(如`StrValueB`)。在子窗体关闭之前,你可以获取这个属性的值,然后在主窗体中进行处理: ```csharp string strValueToParent = fmChild.StrValueB; // 处理strValueToParent ``` 在子窗体的关闭事件中,可以设置这个属性以准备传递给主窗体。 在Visual C#智能设备PocketPC 2003设备应用程序中,由于特定平台的限制,可能需要使用不同的方法来显示子窗体,例如使用`Form.ShowDialog(owner)`代替`Form.Show()`。但是,基本的传值机制保持不变,即通过公共属性和`Owner`属性进行数据交换。 C#窗体间传递值的关键在于理解公共属性和`Owner`属性的作用,以及正确地在适当的生命周期阶段访问这些属性。这些方法不仅适用于主窗体与子窗体之间的通信,也可以扩展到多个窗体之间的数据共享。