当selectedItem为null时,如何阻止弹窗并终止程序?
处理弹窗返回null的解决方案
1. 弹窗关闭后未选中项时终止程序
针对你提到的selectedItem为null时导致List为空的问题,我们可以在弹窗关闭后立即判断,一旦发现未选中任何项,直接终止程序或抛出异常,避免返回null:
修改后的代码示例:
public static string Show(IList<ListItem> items, string title) { ItemsPopupWindow instance = new ItemsPopupWindow(items, title); instance.ShowDialog(); if (instance.selectedItem == null) { // 直接终止程序,状态码1表示异常退出 Environment.Exit(1); // 若遵循.NET异常规范,也可抛出异常让调用方处理 // throw new InvalidOperationException("未选择有效项,无法继续执行"); } return instance.SelectedItem; }
- 使用
Environment.Exit(1)会立刻终止整个进程,适合你需要直接停止程序的场景; - 选择抛出异常的话,能让调用代码有机会捕获并做清理操作,同时避免返回
null引发后续错误。
2. 提前拦截无意义的弹窗(可选)
如果你希望在没有可选择项的情况下直接终止程序,不弹出弹窗,可以在创建弹窗前增加判断:
public static string Show(IList<ListItem> items, string title) { // 检查传入的选项列表是否为空或无有效项 if (items == null || items.Count == 0) { Console.WriteLine("没有可选择的项,程序终止"); Environment.Exit(1); } ItemsPopupWindow instance = new ItemsPopupWindow(items, title); instance.ShowDialog(); if (instance.selectedItem == null) { Environment.Exit(1); } return instance.SelectedItem; }
这样可以避免用户看到空的弹窗,直接终止程序。
补充说明
- 调用
Environment.Exit()前如果有需要释放的资源(比如文件、数据库连接),建议先完成清理操作; - 如果你不想完全终止程序,也可以在
selectedItem为null时返回一个默认值(比如空字符串),但根据你的需求,直接终止程序是最直接避免List为空的方式。
内容的提问来源于stack exchange,提问作者Dragan
相关产品推荐
相关产品推荐

