
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBoxShow(this, "确认关闭?",
"提示", MessageBoxButtonsOKCancel, MessageBoxIconWarning) == DialogResultOK)
{
ArrayList alist = new ArrayList();
alistAdd("newCODDemoexe");
alistAdd("newCODDemovshostexe");
for (int i = 0; i < alistCount; i++)
{
if (SystemDiagnosticsProcessGetProcessesByName(alist[i]ToString())Length <= 0)
{
try
{
//SystemDiagnosticsProcessStart(processName);
SystemDiagnosticsProcessGetCurrentProcess()Kill();
}
catch
{
MessageBoxShow(this, "关闭向导出错", "提示", MessageBoxButtonsOK, MessageBoxIconInformation);
}
}
}
}
}
注册FormClosing事件,既然关闭了窗体,那相关进程也要关掉。免得一直占用内存资源。
下面的代码兼容除 Opera 之外的任何浏览器。Opera 到现在最高版本为止对 onunload 的支持都是不完整的,对于 unbeforeunload 更是根本不支持。
<script type="text/javascript">windowonbeforeunload = function(e) {
e = e || windowevent;
var msg = "您确定要离开此页面吗?";
// IE
ecancelBubble = true;
ereturnValue = msg;
// Firefox
if(estopPropagation) {
estopPropagation();
epreventDefault();
}
// Chrome / Safari
return msg;
};
</script>
效果图
你想要触发的是窗口关闭事件windowClosed, 那么你需要调用dispose方法,对窗口进行销毁
修改代码如下
public void windowClosing(WindowEvent e) {Systemoutprintln("windowClosing--窗体正在关闭事件");
//fsetVisible(false);//隐藏窗口
fdispose();//销毁窗口-->这行代码会触发windowClosed事件
}
还有其他一些细节的修改,参考下面的代码
import javaawt;import javaawtevent;
//类名不要写一个小写字母,推荐写一个完整的名词来作为类名
public class EventDemo {
public static void main(String[] args) {
Frame f = new Frame("hello");
fsetSize(300, 300);
fsetLocation(300, 200);
//fsetVisible(true);//不要先显示窗口, 先显示了窗口,就看不到"窗口打开事件"了
faddWindowListener(new WindowListener() {
@Override
public void windowOpened(WindowEvent e) {
Systemoutprintln("windowOpened--窗体打开事件");
}
@Override
public void windowIconified(WindowEvent e) {
Systemoutprintln("windowIconified--窗体图标化事件");
}
@Override
public void windowDeiconified(WindowEvent e) {
Systemoutprintln("windowDeiconifie--窗体取消图标化事件");
}
@Override
public void windowDeactivated(WindowEvent e) {
Systemoutprintln("windowDeactivated--窗体停用事件");
}
@Override
public void windowClosing(WindowEvent e) {
Systemoutprintln("windowClosing--窗体正在关闭事件");
//fsetVisible(false);//隐藏窗口
fdispose();//销毁窗口
}
@Override
public void windowClosed(WindowEvent e) {
Systemoutprintln("windowClosed--窗体关闭事件");
Systemexit(0);
}
@Override
public void windowActivated(WindowEvent e) {
Systemoutprintln("windowActivated--窗体激活事件");
}
});
fsetVisible(true);//窗口显示
}
}
捕获windowprint()的窗口完成后的事件可按照一下 *** 作尝试:
一、 第一种方法:
1、用documentexecCommand来处理。
2、documentexecCommand在执行完后会有返回值。
3、接着,就能判断:
(1)function CloseAfterPrint(){if(tata=documentexecCommand("print")){windowclose();}else setTimeout("CloseAfterPrint();",1000);}
(2)function DoSomeThing(){XXXX; //your codeClostAfterPrint();}
二、 第二种方法:
用setTimeout()来控制javascript运行顺序:windowprint();setTimeout("windowclose();", 0);
Closing 是Form类的事件,你先检查一下。
在窗体关闭时,Closing 事件发生。在窗体关闭后,将释放在该对象内创建的所有资源并释放该窗体。如果取消此事件,则该窗体保持打开状态。若要取消窗体的关闭 *** 作,请将传递给事件处理程序的 CancelEventArgs 的 Cancel 属性设置为 true。
当窗体显示为模式对话框时,单击“关闭”按钮(窗体右上角带 X 的按钮)会隐藏窗体并将 DialogResult 属性设置为 DialogResultCancel。通过在窗体的 Closing 事件的事件处理程序中设置 DialogResult 属性,可以重写用户单击“关闭”按钮时分配给 DialogResult 属性的值。
警告:
当调用 ApplicationExit 方法以退出应用程序时,不引发 FormClosed 和 FormClosing 事件。如果在必须执行的其中一个事件中有验证代码,则在调用 Exit 方法之前,应分别为每个打开的窗体调用 FormClose 方法。
如果窗体是 MDI 父窗体,则在引发 MDI 父窗体的 Closing 事件之前将引发所有 MDI 子窗体的 Closing 事件。另外,在引发 MDI 父窗体的 Closed 事件之前,将引发所有 MDI 子窗体的 Closed 事件。取消 MDI 子窗体的 Closing 事件不能防止引发 MDI 父窗体的 Closing 事件。但是,取消该事件会将作为参数传递给父窗体的 CancelEventArgs 的 Cancel 属性设置成 false。要强制关闭所有 MDI 父窗体和子窗体,请将 MDI 父窗体中的 Cancel 属性设置成 false。
注意:
在显示为无模式窗口的 Form 上调用 Close 方法时,不能调用 Show 方法使窗体可见,因为窗体的资源已被释放。若要隐藏窗体然后又使其可见,请使用 ControlHide 方法。
以上就是关于C#winform判断子窗口是否已关闭或在关闭的时候触发事件全部的内容,包括:C#winform判断子窗口是否已关闭或在关闭的时候触发事件、js如何监听窗口的关闭、运行java代码怎样 *** 作显示windowclosed--窗体关闭事件,求解答!!!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)