为了实现这个例子,你需要准备2个窗口,一个叫MainForm,上面至少需要一个richTextBox,两个工具栏按钮。
另一个叫 MyDialog 的子窗口,上面有一个 textBox1,一个 Button,作为确定按钮。
两个工具栏按钮分别实现两种形式的窗体调用,模态的和非模态的。
模态的意思是,我们打开对话框,将值传进取,操作完成确定,主窗体再获得对话框的值。
非模态的意思是,我们打开对话框,可以在不关闭窗口的情况下和主窗体交互,主窗体可以即时获得子窗体的值。类似记事本的查找替换对话框。
主窗体:
子窗体:
简单分析下这个代码:
模态传值的方法是:传入时可以使用构造函数,传出的时候首先判断是否用户是通过确定关闭的,如果是,那么用属性传出。
这个做法也是框架库的做法,比如打开文件对话框。
非模态的情况略微复杂:因为我们需要主窗体能和子窗体实时交互,为了同步主窗体和子窗体的数据,我们用了事件。有人问了,为什么我们不能让子窗体直接操作主窗体,这是因为考虑到对话框可以被重用,如果让它直接操作主窗口那么就限制死了这个子窗口只能被某个特定的主窗口调用。为了解除子窗体对调用者的耦合,我们使用事件。如果子窗体已经被显示,主窗体再次调用子窗体,那么通常我们希望激活子窗体而不是再显示一个。具体的实现参考代码。
分享到:
相关推荐
在WinForms程序里实现窗体传值的最佳实践 http://topic.csdn.net/u/20110407/19/c1068d69-7331-4d02-bc0b-f5ba7a5f8dd8.html
在WinForms程序里实现窗体传值的三种方法
Q759361 v2 C# winforms listbox 双击条目直接修改 窗体传值实时同步
使用WeifenLuo.WinFormsUI.Docking 控件应用 实现窗体浮动 树形展示,索引目录查找功能
C#Winforms聊天程序,好不好下载后就知道!
WeifenLuo.WinFormsUI.Docking winform 窗体布局,实现多选项卡窗体、多文档窗体样式
开发环境:Visual Studio 2005 语言:c# 运行环境 :Microsoft.NET Framework v2.0
包含了所有的C#WinForms窗体皮肤文件,ssk格式.
一个简单的C#WinForms窗体表白趣味程序,实现询问操作者Do You Love Me?根据不同按钮控制回应。no按钮通过事件控制鼠标移动到no按钮时移动位置,也可通过缩小窗口来捕捉no按钮,回应也是正向的,可以用来表白喜欢的...
C# 窗体加载特效winforms C# 窗体加载特效winforms @@:292258449
设计:用户名为“Adimin”,密码为“123”,则弹出登录成功的消息框,如果连续三次输入错误,则退出应用程序。 说明:这是我的作业题!请大家见谅!
WinForms程序加上启动动画源码 启动动画源码
visual studio2010,WinForm使用WeifenLuo实现窗体布局,DEMO,完整源码. 添加引用文件 WeifenLuo.WinFormsUI.Docking.dll。标签页形式加载窗体,窗体可任意拖放变换位置。
C# CefSharp(Google Chrome Webkit内核)如何在Winforms应用程序中使用
某银行要实现银行开户和交易电子化管理,要求使用。NET WinForms技术完成一个简单银行交易管理系统的开发,其中保存在SQL Server 2005数据库的银行卡表和交易表。
VMDotNet让winforms程序脱离.net framework运行. 我的博客中有 介绍 怎么设置。
C#Winforms窗体MySchool项目资源(包括源代码),呵呵!还是本人学习做的。
需要在DockPanel控件中显示的子窗体(多标签,停靠,自动隐藏)必须继承自WeifenLuo.WinFormsUI.Docking. DockContent类;DockContent重载了窗体的show方法,所以继承自DockContent的子窗体能把自己以指定方式显示在...
窗体自动吸附隐藏 C# winforms QQ:292258449