c# 关闭窗口的语句是什么?

c# 关闭窗口的语句是什么?,第1张

c#关闭窗口的方式和打开窗口有关系。
1:窗口打开的时候使用的是模态窗口
11:使用窗口的关闭按钮,不写语句就可以关闭
12:窗口有关闭按钮:使用thisclose();
13: 窗口有关闭按钮:使用thisDialogResult=DialogResultOK或DialogResultCancle;
2:窗口打开的时候使用的是非模态窗口
21:使用窗口的关闭按钮,不写语句就可以关闭
22:窗口有关闭按钮:使用thisclose();

重载窗口WM_CLOSE消息,在消息响应函数中:void CDialog1::OnClose() { // TODO: Add your message handler code here and/or call default ShowWindow(SW_HIDE); //CDialog::OnClose();}需要注意的是,标准对话框程序是模态调用的,模态窗口没有隐藏的概念,因此必须改成非模态创建才可以,主对话框修改在InitInstance入口中。

首先说定位常规窗口,官网给出了一个方法:
for (String handle : drivergetWindowHandles()) {
driverswitchTo()window(handle);
}
这个方法大多数数情况下是没问题的,但其实不太安全,有一定隐患,因为getWindowHandles()这个方法返回值是Set集合,而Set集合里的元素是无序的,假设这样一种情况:WebDriver运行,初始化了第一个浏览器窗口,然后在这个窗口中点击了某个超链接或按钮,d出一个新窗口,此时用getWindowHandles()获取这两个窗口的Handler,并存放在Set集合里,则Set集合里的可能的情况是:[asdf,jkml],其中,asdf是第一个窗口的Hander,而jkml是第二个窗口的Handler。然后在第二个窗口中处理完了相关业务后,第二个窗口被关闭,然后再回到第一个窗口,再点击另外的超链接或按钮,则再d出一个新窗口,此时再用getWindowHandles()获取所有窗口的Handler,存放在Set集合中,此时Set集合里的元素有可能是:[qwer,asdf],其中,asdf仍然是第一个窗口的Handler,这个时候,再用官网提供的for循环方法来切换到第二个窗口,必须定位不到!因为此时在Set集合中第2个位置存放的是第一个窗口的Handler。反正就是说Set集合里的元素是无序的,多次执行了getWindowHandles()之后,并不能保证Set集合里的末位置的元素一定是最新打开的那个窗口的Handler,所以有时候就不稳定不安全。

如果d出窗用的是 windowshowModalDialog
可以在aaa()方法中使用 var returnValue = windowshowModalDialog(); d出窗口并得到返回值,返回值需要在d出的窗口中设置如:
function commit(){
windowreturnValue = {
id : ‘33333’, //参数
} ;
windowclose();
)
如果用windowopen(。。)d出的,可以在d出窗中调用aaa()函数如:
function commit(){
if(windowopener) {
windowopeneraaa('33333') ; //参数
}
windowclose();
}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13393493.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-27
下一篇 2023-07-27

发表评论

登录后才能评论

评论列表(0条)

保存