dialogresult.ok 是什么意思?新手程序员快速入门指南。

吉云

今天就来唠唠这个。说起来这玩意儿,我刚开始接触那会儿,还真踩过坑,现在想想都觉得挺有意思的。

那时候我刚上手做点窗口程序,就是那种带按钮、能点点点的。有个需求挺常见的,就是点一个按钮,弹个确认框出来,问用户“你确定要这么干吗?”,比如删除个啥东西之类的。当时觉得简单,拖个按钮,写个点击事件,弹个MessageBox就完事。

dialogresult.ok 是什么意思?新手程序员快速入门指南。

我就直接用那个,它不是有好几种重载嘛我就选那个带“确定”和“取消”按钮的。代码大概就是这样,点删除按钮,然后*("确定要删除吗?", "提示", *)。弹窗是出来,看着也像那么回事。

关键问题来,我当时想当然地以为,只要弹这个框,用户点“确定”,后面的删除代码就自动执行。结果?我发现不对劲,不管用户点“确定”还是“取消”,甚至点右上角的叉叉关掉,我写在后面的删除代码总会执行!这下可把我搞懵,这不就等于没确认嘛点一下按钮,不管三七二十一就删,那还弹个啥框。

后来我就开始琢磨,这个执行完之后,肯定得告诉我用户点哪个按钮。不然我程序咋知道用户是同意还是反悔?我就去查查,或者说,瞎试试。发现这玩意儿,它是有个返回值的!返回的就是一个叫DialogResult的类型。

这下思路就清晰。我得先用一个变量接住这个返回值,像这样:

DialogResult result = *("确定要删除吗?", "提示", *);

然后,我得判断这个result变量的值到底是如果用户点“确定”按钮,那这个result的值就是。我的删除代码,不能直接写在后面,而是要写在一个if判断里面:

if (result == *) {
// 这里才是真正执行删除操作的代码
// 比如:删除文件、删除数据啥的

这么一改,立马就对!点删除,弹框,点“确定”,东西没;点“取消”或者关掉框,啥事没有,数据还在。这逻辑才对嘛

后来做复杂点的功能,需要自己设计弹窗(不是用MessageBox,而是自己做个小Form),原理也是一样的。在那个自定义的小窗口里放上“确定”、“取消”按钮。给“确定”按钮设置DialogResult = *,给“取消”按钮设置DialogResult = *。然后在主窗口里调用这个小窗口的ShowDialog()方法,同样用一个变量接收返回值,再判断是不是,决定要不要执行接下来的操作。

MyCustomDialogForm dialog = new MyCustomDialogForm();
if (*() == *) {
// 用户在自定义窗口里点确定
// 获取自定义窗口里的数据,然后干活
} else {
// 用户点取消或者关闭
// 啥也不干,或者给个提示

这个看着简单,是窗口程序里处理用户交互,特别是确认操作的一个核心环节。关键就是要记住,ShowDialog()或者类似的弹出确认框的方法,它的返回值非常重要,一定要接住并且判断,根据判断结果来决定程序的下一步走向。不然就容易出逻辑错误,像我一开始那样,不管用户点啥都执行,那就尴尬。

今天就先分享这点实践心得,希望能帮到可能也遇到类似情况的朋友。

免责声明:由于无法甄别是否为投稿用户创作以及文章的准确性,本站尊重并保护知识产权,根据《信息网络传播权保护条例》,如我们转载的作品侵犯了您的权利,请您通知我们,请将本侵权页面网址发送邮件到qingge@88.com,深感抱歉,我们会做删除处理。

目录[+]