You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

当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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:10:04