C#窗体间传值技术详解
需积分: 10 65 浏览量
更新于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`属性的作用,以及正确地在适当的生命周期阶段访问这些属性。这些方法不仅适用于主窗体与子窗体之间的通信,也可以扩展到多个窗体之间的数据共享。
133 浏览量
225 浏览量
点击了解资源详情
2013-11-07 上传
105 浏览量
686 浏览量
293 浏览量
2015-12-31 上传
2012-03-28 上传
ljianc
- 粉丝: 1
- 资源: 2
最新资源
- DFSBack:DFS站点管理系统
- docker-tutorial:零基础学习docker,从应用入手带你深入理解docker
- 易语言学习-高级表格支持库最新测试版(2012-11-2).zip
- appfuse-service-3.0.0.zip
- 精益求精上网导航精美版生成htmlV090308
- ScoketServer.7z
- 参考正点原子,二次改造的STM32板卡原理图分享-电路方案
- Accelerated C# 2010.rar
- AcidPlatformer:这是一个简单的javascript平台程序,可能会随着时间的推移而演变为更多东西
- apm-agent-python:弹性APM的官方Python代理
- eshop-cache.rar
- studentManage.zip
- Module-6-Assessment-2
- :laptop:功能齐全的本地AWS云堆栈。 离线开发和测试您的云和无服务器应用程序!-Python开发
- 一组经典小图标 .xd .sketch .fig .png .svg素材下载
- django-accounting:适用于Django 1.7+项目的计费可插拔应用