C#程序未选中ListBox项点击按钮触发空引用崩溃如何修复
问题原因
当你没有在列表框中选中任何项时,lbxSavedColors.SelectedItem会返回null,此时直接调用ToString()方法就会触发你遇到的空引用异常。
修复代码
只需要在执行颜色转换逻辑前先做空值校验即可:
private void btnChoose_Click(object sender, EventArgs e) { // 校验是否选中了列表项 if (lbxSavedColors.SelectedItem == null) { // 可选择弹出提示告知用户 MessageBox.Show("请先选择一个颜色项"); return; } Color SelectedColor = System.Drawing.ColorTranslator.FromHtml(lbxSavedColors.SelectedItem.ToString()); pbxChosenColor.BackColor = SelectedColor; }
可选交互优化
你也可以从操作层面直接避免用户误触发:
- 窗体初始化时将
btnChoose的Enabled属性设为false - 给
lbxSavedColors添加SelectedIndexChanged事件,逻辑如下:
private void lbxSavedColors_SelectedIndexChanged(object sender, EventArgs e) { btnChoose.Enabled = lbxSavedColors.SelectedItem != null; }
这个方案会在用户未选中任何项时禁用按钮,从根源上避免误点,无需额外的点击校验和提示。
内容的提问来源于stack exchange,提问作者Charlie Holm
相关产品推荐
相关产品推荐

