`
isiqi
  • 浏览: 16538673 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

在WinForms程序里实现窗体传值的最佳实践

阅读更多

为了实现这个例子,你需要准备2个窗口,一个叫MainForm,上面至少需要一个richTextBox,两个工具栏按钮。
另一个叫 MyDialog 的子窗口,上面有一个 textBox1,一个 Button,作为确定按钮。

两个工具栏按钮分别实现两种形式的窗体调用,模态的和非模态的。

模态的意思是,我们打开对话框,将值传进取,操作完成确定,主窗体再获得对话框的值。
非模态的意思是,我们打开对话框,可以在不关闭窗口的情况下和主窗体交互,主窗体可以即时获得子窗体的值。类似记事本的查找替换对话框。

主窗体:

子窗体:

简单分析下这个代码:

模态传值的方法是:传入时可以使用构造函数,传出的时候首先判断是否用户是通过确定关闭的,如果是,那么用属性传出。
这个做法也是框架库的做法,比如打开文件对话框。

非模态的情况略微复杂:因为我们需要主窗体能和子窗体实时交互,为了同步主窗体和子窗体的数据,我们用了事件。有人问了,为什么我们不能让子窗体直接操作主窗体,这是因为考虑到对话框可以被重用,如果让它直接操作主窗口那么就限制死了这个子窗口只能被某个特定的主窗口调用。为了解除子窗体对调用者的耦合,我们使用事件。如果子窗体已经被显示,主窗体再次调用子窗体,那么通常我们希望激活子窗体而不是再显示一个。具体的实现参考代码。

分享到:
评论

相关推荐

    在WinForms程序里实现窗体传值的最佳实践 - ver 1.0

    在WinForms程序里实现窗体传值的最佳实践 http://topic.csdn.net/u/20110407/19/c1068d69-7331-4d02-bc0b-f5ba7a5f8dd8.html

    在WinForms程序里实现窗体传值的三种方法

    在Windows Forms(WinForms)应用程序开发中,常常需要在不同的窗体之间传递数据。这可能是为了更新用户界面,处理业务逻辑,或者在多个步骤的用户交互中维持状态。以下是实现WinForms窗体间传值的三种常用方法: 1...

    c#不同窗体传值经典方法

    通过以上代码示例可以看出,使用属性和委托机制可以非常方便地实现在 C# 的 WinForms 应用程序中不同窗体之间的数据传递。这种方法不仅简洁高效,而且易于理解和维护。在实际项目开发中,可以根据具体需求调整和完善...

    C#,winform,ShowDialog,子窗体向父窗体传值

    在C# WinForms开发中,通过`ShowDialog`方法结合`DialogResult`和自定义属性,可以有效地实现在子窗体与父窗体之间的数据传递。这种方式不仅增强了应用程序的交互性,也提高了数据输入的准确性。通过适当的错误处理...

    委托:实现窗体间的传值

    在WinForms开发中,我们经常需要在多个窗体之间传递数据,以实现不同界面之间的交互。委托是C#中一个强大的特性,它可以作为方法的引用,允许我们在程序的不同部分之间传递行为。在这个场景下,我们将探讨如何使用...

    Q759361 v2 C# winforms listbox 双击条目直接修改 窗体传值实时同步

    标题“Q759361 v2 C# winforms listbox 双击条目直接修改 窗体传值实时同步”所描述的就是这样一个功能实现:当用户双击`ListBox`中的条目时,会弹出一个窗体用于编辑选中的值,并且这个修改能够实时同步到`ListBox`...

    winfrom两个窗体之间传值

    3. 数据传递:在不同的窗体间传递数据是实现应用程序功能的重要环节。这通常涉及到对象实例、属性、方法或事件的使用。 二、常见方法 1. 构造函数传递:在打开新窗体时,可以通过传递参数给新窗体的构造函数来传递...

    winform窗体传值,给我点积分吧!

    在讨论窗体间传值之前,我们先了解一下窗体的基本显示模式。根据窗体显示方式的不同,可以分为两种主要模式:模态对话框(Modal Dialog)和非模态对话框(Modeless Dialog)。 - **模态对话框**:在该模式下,当前...

    WinForms_C#_MDI窗体

    下面我们将详细探讨MDI窗体在C# WinForms中的实现及其相关知识点。 1. **MDI窗体基础** - **MDI父窗体(MDIParent)**:MDI应用程序的核心组件,它承载并管理所有子窗体(MDI Child Forms)。在C# WinForms中,...

    winform窗体间传值

    根据给定的信息,本文将详细解释 Windows Forms (WinForms) 应用程序中窗体间传值的方法。在 WinForms 开发中,窗体之间的数据传递是常见的需求,尤其是在需要多个窗体协同工作的情况下。本文将详细介绍五种不同的...

    使用WeifenLuo.WinFormsUI.Docking 控件应用 实现窗体浮动 树形展示,索引目录查找功能

    使用WeifenLuo.WinFormsUI.Docking 控件应用 实现窗体浮动 树形展示,索引目录查找功能

    模式窗体页面传值关于自定义控件与页面之间的传值

    了解并熟练掌握这些知识点,可以帮助开发者更高效地在模式窗体和页面之间,以及自定义控件与页面之间传递数据,提升应用程序的用户体验和功能完整性。在实际开发过程中,应根据具体场景选择最适合的传递方式,同时...

    C#窗体向另一个窗体实时传值源码

    "C#窗体向另一个窗体实时传值"这个主题涉及到的是在WinForm应用中,如何在两个或多个窗体之间传递数据,特别是在数据变化时即时更新另一窗体的内容。下面将详细解释这一知识点。 1. **窗体间通信基础** 在C# ...

    C#Winforms聊天程序

    源代码意味着开发者或学习者可以查看和修改程序的内部工作原理,这对于理解C#编程、Winforms应用设计以及网络通信协议(如TCP/IP或WebSocket)的实现非常有价值。 在这个C# Winforms聊天程序中,开发者可能使用了...

    WinForms 记事本应用程序

    【WinForms 记事本应用程序】是一个基于C#语言和Windows Forms(WinForms)平台的简单文本编辑器项目,主要用于学习和实践编程技术。在VS2005(Visual Studio 2005)开发环境下,这个小型练习旨在帮助开发者掌握如何...

    C#窗体小程序

    在这个程序中,开发者通过类和对象的概念来设计和实现窗体的功能。 1. **C#语言基础**:C#是一种面向对象的编程语言,由微软公司开发,主要用于.NET平台。它的语法简洁明了,支持多种编程范式,如面向对象、泛型、...

    WinForms登录窗体设计

    在Windows Forms(WinForms)应用开发中,设计一个登录窗体是常见的需求,它用于验证用户的身份并控制访问权限。本题目要求创建一个简单的登录界面,包含用户名和密码输入框,以及登录按钮。当用户输入正确的用户名...

    WinForms窗体皮肤文件

    WinForms窗体皮肤文件是为Windows Forms应用程序设计的外观定制工具,主要应用于C#编程环境中。Windows Forms(简称WinForms)是.NET Framework的一部分,提供了一种用于构建桌面应用的图形用户界面(GUI)的方法。...

Global site tag (gtag.js) - Google Analytics