.NET中开发WinForm程序,如何通过一个窗口打开另外一个窗口,要求上一窗口关闭
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.NET中开发WinForm程序,如何通过一个窗口打开另外一个窗口,要求上一窗口关闭相关的知识,希望对你有一定的参考价值。
.NET中开发WinForm程序,如何通过一个窗口打开另外一个窗口,要求上一窗口关闭,实际中会出现新窗口一闪而过的情况,因为开启窗口作为其父窗口,关闭后子窗口也就没了,有什么办法将程序运行的当前窗口改为新窗口吗?或者有什么好的办法?
在Form1_load事件里写:this.isMdiparent=ture;应该写在"新建"的按钮或者是有"新建"的menuItem里面:
Form2 f2=new Form2();
f2.isMdichildren=true;
f2.Mdiparent=this;
f2.show();
然后,再Form2的load事件里写:
this.Active();
Form2的init事件里也要写:this.Active;
在Form2关闭的时候(close事件)写判断是否保存之类的语句, Close事件这里的最后一句写this.close();
应该是这样子的,我以前也写过MDI窗体的程序的, 这次给你写的时候,机器上没有.NET环境, 只好凭借记忆力打了,你要测试的话呢,应该自己把我写的打一遍,有个快捷键Ctrl+J的, 如果我的有个别单词的错误,你可以按Ctrl+J显示可选列表,找最相近的... 参考技术A 你可以使用ApplicationContext
在Program类中
static class Program
internal static ApplicationContext context = new ApplicationContext(new Form1());
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
Application.EnableVisualStyles();
Application.Run(context);
然后这样显示窗体:
Form2 form = new Form2();
Program.context.MainForm = form;
form.Show();
就可以将上下文的主窗体设置为新的Form2了,然后关闭form1就不影响程序运行了 参考技术B 不能的。只能隐藏。因为第一个窗体是程序的入口点。
关闭 它就像相当于关闭整个程序。
Form2 form2=new form2();
this.Hide();//隐藏第一个窗体。
form2.Show(); 参考技术C Form2 form2=new form2();
form2.Show(); 参考技术D 这个问题啊
我也只有想到把上一窗口隐藏了
不过这个方法不是很好
如果你实在找不到好的方法
建议先用一下吧
开源组件NanUI一周年 - 使用HTML/CSS/JS来构建.Net Winform应用程序界面
NanUI是什么
NanUI基于ChromiumFX项目进行开发,它能让你在你的Winform应用程序中使用HTML5/CSS3/Javascript等网页技术来呈现用户界面(类似Electron)。同时NanUI提供了原生窗口和定制化的无标题栏无边框窗口,你能使用全部的网页技术来设计和呈现你的应用程序界面。
开源方式
NanUI基于MIT协议,所以无论你使用NanUI来开发商业项目或者开源、免费项目都将不受任何限制,只需要遵照协议文件中规定的,在你的软件中声明使用了NanUI技术即可。
系列文档
NanUI简介
开始使用NanUI
打包并使用内嵌式的HTML/CSS/JS资源
使用网页来设计整个窗口
如何实现C#与Javascript相互掉用(待更新。。。)
如何处理NanUI中的下载过程 - DonwloadHandler的使用(待更新。。。)
如何处理NanUI中的弹窗过程 - LifeSpanHandler的使用(待更新。。。)
如何控制Javascript对话框 - JsDialogHandler的使用(待更新。。。)
自定义资源处理程序 (待更新。。。)
源码和包
你可以通过GitHub获取NanUI的源码以及示例代码,稳定版的NanUI包通过Nuget进行分发。NanUI支持.NET4.0/4.5/4.6/4.7和更新版本的Windows窗体应用。
获取源码
git clone https://github.com/NetDimension/NanUI.git
Nuget包管理器
常规版本(CEF 3.2987.1601.gf035232 / Chromium 57.0.2987.133)
PM> Install-Package NetDimension.NanUI
WindowXP版本(CEF 3.2526.1366.g8617e7c / Chromium 47.0.2526.80)
PM> Install-Package NetDimension.NanUI.XP
推荐使用Nuget包管理器安装NanUI程序集将自动安装对应的CEF依赖项,一键安装方便使用。
如何编译源码和示例
编译当前版本的NanUI需要支持C#7.0语法的编译器,推荐的编译工具有且只有Visual Studio 2017。
如何使用
初始化NanUI
namespace TestApplication{
using NetDimension.NanUI;
static class Program
{
[STAThread] static void Main(string[] args) {
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
//初始化CEF: 设置CEF的相关Path
//如果要使用Nuget自动下载的fx文件夹结构,需要手动指定各个文件夹的路径
var result = Bootstrap.Load(PlatformArch.Auto, System.IO.Path.Combine(Application.StartupPath, "fx"), System.IO.Path.Combine(Application.StartupPath, "fx\\Resources"), System.IO.Path.Combine(Application.StartupPath, "fx\\Resources\\locales"));
if (result)
{ // Load embedded html/css resources in assembly.
Bootstrap.RegisterAssemblyResources(System.Reflection.Assembly.GetExecutingAssembly());
Application.Run(new Form1());
Application.Exit();
}
}
}
}
使用原生的窗口样式来使用NanUI
namespace TestApplication{
public partial class Form1 : Formium
{ public Form1()
//Load embedded resource index.html and not set form to no border style by the second parameter. : base("http://res.app.local/index.html", false)
{
InitializeComponent();
}
}
}
使用无边框模式来使用NanUI
namespace TestApplication{ public partial class Form1 : Formium
{ public Form1() //Load embedded resource index.html and set form to no border style by igrone the second parameter or set it to true. : base("http://res.app.local/index.html") {
InitializeComponent();
}
}
}
请注意:如果使用Visual Studio 2015或者更低的版本开发和调试NanUI应用程序,需要在项目属性的调试选项卡中关闭“启用VS承载进程”选项,否则调试时将出现页面不加载白屏的情况。如图所示:
社群和帮助
GitHub
https://github.com/NetDimension/NanUI/
以上是关于.NET中开发WinForm程序,如何通过一个窗口打开另外一个窗口,要求上一窗口关闭的主要内容,如果未能解决你的问题,请参考以下文章
开源组件NanUI一周年 - 使用HTML/CSS/JS来构建.Net Winform应用程序界面