首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修复NullReferenceException WPF文本框

如何修复NullReferenceException WPF文本框
EN

Stack Overflow用户
提问于 2013-10-07 14:39:09
回答 3查看 3.1K关注 0票数 1

在将数据加载到combobox和textbox之后,我有这样的情况,但是当应用程序第一次加载时,组合框是=烟草使用吗?并尝试将textbox设置为空,我得到"NullReferenceException -对象引用未设置为对象的实例“。不知道如何解决这一问题,并使它能够在“烟草使用”时清除文本框?被选中。还有“烟草使用?”是组合框的默认设置。

comboBox cbTobacco.Text

textBox = cbTobaccoCode.Text

代码语言:javascript
复制
private void cbTobacco_SelectionChanged(object sender, SelectionChangedEventArgs e)
 {
   if (cbTobacco.Text != null)
   {
     switch (Convert.ToString(cbTobacco.Text))
      {
        case "Tobacco Use?": strTobaccoCode = ""; break;
        case "1 - Current every day smoker": strTobaccoCode = "449868002"; break;
        case "2 - Current some day smoker": strTobaccoCode = "428041000124106"; break;
        case "3 - Former smoker": strTobaccoCode = "8517006"; break;
        case "4 - Never smoker": strTobaccoCode = "266919005"; break;
        case "5 - Smoker, current status unknown": strTobaccoCode = "77176002"; break;
        case "6 - Unknown if ever smoked": strTobaccoCode = "266927001"; break;
        case "7 - Heavy tobacco smoker": strTobaccoCode = "428071000124103"; break;
        case "8 - Light tobacco smoker": strTobaccoCode = "428061000124105"; break;
      }
  cbTobaccoCode.Text = strTobaccoCode;
  }
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-10-07 14:51:54

您确定应用程序输入的是第一种情况,并设置了strTobaccoCode的值吗?放个断点检查一下。

使用“默认”选项可以使代码更加安全:

代码语言:javascript
复制
private void cbTobacco_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    if (cbTobacco.Text != null)
    {
        string strTobaccoCode;
        switch (Convert.ToString(cbTobacco.Text))
        {
            case "1 - Current every day smoker": strTobaccoCode = "449868002"; break;
            case "2 - Current some day smoker": strTobaccoCode = "428041000124106";     break;
            case "3 - Former smoker": strTobaccoCode = "8517006"; break;
            case "4 - Never smoker": strTobaccoCode = "266919005"; break;
            case "5 - Smoker, current status unknown": strTobaccoCode = "77176002"; break;
            case "6 - Unknown if ever smoked": strTobaccoCode = "266927001"; break;
            case "7 - Heavy tobacco smoker": strTobaccoCode = "428071000124103"; break;
            case "8 - Light tobacco smoker": strTobaccoCode = "428061000124105"; break;
            default: strTobaccoCode = ""; break;
        }
        cbTobaccoCode.Text = strTobaccoCode;
    }
}
票数 2
EN

Stack Overflow用户

发布于 2013-10-07 14:53:33

您也应该设置默认的大小写。此外,您为什么要直接访问cbTobacco?您应该将发送方(如果您已经正确地连接了您的事件)转换到文本框中,并从那里访问值:

代码语言:javascript
复制
 private void cbTobacco_SelectionChanged(object sender, SelectionChangedEventArgs e)
 {
   var textBox = sender as TextBox;

   if (textBox != null && textBox.Text != null)
   {
     switch (Convert.ToString(textBox.Text))
      {
        case "Tobacco Use?": strTobaccoCode = ""; break;
        case "1 - Current every day smoker": strTobaccoCode = "449868002"; break;
        case "2 - Current some day smoker": strTobaccoCode = "428041000124106"; break;
        case "3 - Former smoker": strTobaccoCode = "8517006"; break;
        case "4 - Never smoker": strTobaccoCode = "266919005"; break;
        case "5 - Smoker, current status unknown": strTobaccoCode = "77176002"; break;
        case "6 - Unknown if ever smoked": strTobaccoCode = "266927001"; break;
        case "7 - Heavy tobacco smoker": strTobaccoCode = "428071000124103"; break;
        case "8 - Light tobacco smoker": strTobaccoCode = "428061000124105"; break;
        default: strTobaccoCode = ""; break;
      }

      textBox.Text = strTobaccoCode ?? "";
  }
}
票数 1
EN

Stack Overflow用户

发布于 2013-10-07 17:17:04

尝试添加以下内容(验证文本框是否为空,然后验证文本是否为空)

代码语言:javascript
复制
    if(cbTobacco != null)

前面的行

代码语言:javascript
复制
if (cbTobacco.Text != null)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19227686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档