我运行一个新表格
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new FormMain());
}
然后我打电话到FormMain()
:
Application.Run(applicationContext);
如何通过代码关闭FormMain
?
这里是FormMain
:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using EasyTabs;
namespace CefSharp
{
public partial class FormMain : Form
{
public static AppContainer Container = new AppContainer();
public FormMain()
{
InitializeComponent();
Container.Tabs.Add(new EasyTabs.TitleBarTab(Container)
{
Content = new frmTab
{
Text = "New Tab"
}
});
Container.SelectedTabIndex = 0;
TitleBarTabsApplicationContext applicationContext = new TitleBarTabsApplicationContext();
applicationContext.Start(Container);
Application.Run(applicationContext);
this.Hide();
if(Container.ExitOnLastTabClose)
{
this.Close();
}
}
}
}
答案 0 :(得分:0)
好吧,这不像我写的没有检查那么简单。我想通了线程使用解决。首先,我们需要在表单上委托:
public delegate void closer();
partial class FormMain {
public closer Closer;
(...)
}
在内部类构造函数中或在InitializeComponents
中添加Close
方法:
this.Closer += Close;
创建公共静态FormMain对象:
static class Program {
public static FormMain form1;
(...)
}
然后,您只需在运行窗口中运行线程,然后简单地(在这种情况下为5秒钟)关闭窗口即可。
Program.form1 = new FormMain();
Thread fo = new Thread(() => { Application.Run(Program.form1); });
Thread th = new Thread(() => { Thread.Sleep(5000); Program.form1.Invoke(form1.Closer); });
fo.Start();
th.Start();
答案 1 :(得分:0)
您可以使用两种不同的方法:
formMain.Close()
Application.Exit()
完全关闭应用程序。如果您想要更特殊的东西,请使用Bartek解决方案。但是,您提供给我们的信息仍然不够
答案 2 :(得分:-2)
如果您想从对象外部控制FormMain()
,创建ID会比将新对象传递给Application.Run()
更好。可能是这样的:
var formMain = new FormMain();
Application.Run(formMain);
formMain.Close();