Revit可编辑ComboBox自定义输入触发空引用错误问题排查
问题:Editable ComboBox自定义输入触发空引用错误(Revit环境)
我有一个预填充了典型房屋外墙饰面砌体覆盖率百分比的ComboBox,为支持非典型方案的自定义数值输入开启了IsEditable属性,但输入自定义数值后Revit会抛出错误:Object reference is not set to an instance of an object。期望标题栏的砌体代码能更新为用户输入的数值。
后台填充ComboBox的代码
List<string> listMasonry = new List<string> { "0", "25", "50", "75", "100" }; foreach (string masonry in listMasonry) { cmbCodeMasonry.Items.Add(masonry); } cmbCodeMasonry.SelectedIndex = 0;
报错触发的后台代码
public string GetComboBoxCodeMasonrySelectedItem() { return cmbCodeMasonry.SelectedItem.ToString(); }
XAML代码
<ComboBox x:Name="cmbCodeMasonry" Grid.Column="1" Width="90" Height="25" Grid.Row="4" IsEditable="True"/>
问题原因与解决方法
- 原因:ComboBox开启
IsEditable后,用户输入的自定义内容不在预填充的Items集合中,此时SelectedItem会变为null,直接调用SelectedItem.ToString()就会触发空引用异常。 - 解决方法:改用
Text属性获取用户输入的内容,修改后的方法如下:
public string GetComboBoxCodeMasonrySelectedItem() { return cmbCodeMasonry.Text; }
- 额外建议:可以增加输入验证逻辑,比如判断
Text是否为0-100之间的有效数字,避免非法输入影响后续Revit操作。
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

