C#从TextBox获取整数时报对象引用相关错误如何解决
错误原因
- 你代码中使用的
TextBox是控件类的类名,并非你界面上实际存在的文本框实例名,非静态类的成员必须通过实例对象访问,这是触发报错的核心原因。 - 除了这个引用错误,现有代码还存在潜在崩溃风险:如果用户输入非数字内容,
int.Parse会直接抛出格式异常。
修复方案
你可以选下面任意一种方式修复引用问题,推荐优先用第一种,不需要绑定固定控件名:
方式1:通过事件发送者获取实例
如果这个TextChanged事件是直接绑定到你要取值的文本框上的,可以直接把sender转为TextBox实例使用:
private void TextBox_TextChanged(object sender, TextChangedEventArgs e) { TextBox currentTxt = sender as TextBox; // 防御性判断,避免非文本框触发该事件时报错 if (currentTxt == null) return; // 用TryParse做容错转换,避免非数字输入崩溃 if (int.TryParse(currentTxt.Text, out int result)) { // 此处写入转换成功后的逻辑,result就是提取到的整数 } }
方式2:通过控件名访问
打开界面设计器,选中你要取值的文本框,在属性面板找到Name属性,复制你设置的控件名(比如你设置的是txtNumberInput),替换代码中的类名TextBox即可:
private void TextBox_TextChanged(object sender, TextChangedEventArgs e) { if (int.TryParse(txtNumberInput.Text, out int result)) { // 后续逻辑 } }
内容的提问来源于stack exchange,提问作者Alexander
相关产品推荐
相关产品推荐

