在将数据加载到combobox和textbox之后,我有这样的情况,但是当应用程序第一次加载时,组合框是=烟草使用吗?并尝试将textbox设置为空,我得到"NullReferenceException -对象引用未设置为对象的实例“。不知道如何解决这一问题,并使它能够在“烟草使用”时清除文本框?被选中。还有“烟草使用?”是组合框的默认设置。
comboBox cbTobacco.Text
textBox = cbTobaccoCode.Text
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;
}
}发布于 2013-10-07 14:51:54
您确定应用程序输入的是第一种情况,并设置了strTobaccoCode的值吗?放个断点检查一下。
使用“默认”选项可以使代码更加安全:
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;
}
}发布于 2013-10-07 14:53:33
您也应该设置默认的大小写。此外,您为什么要直接访问cbTobacco?您应该将发送方(如果您已经正确地连接了您的事件)转换到文本框中,并从那里访问值:
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 ?? "";
}
}发布于 2013-10-07 17:17:04
尝试添加以下内容(验证文本框是否为空,然后验证文本是否为空)
if(cbTobacco != null)前面的行
if (cbTobacco.Text != null)https://stackoverflow.com/questions/19227686
复制相似问题