C# ListBox Selected Item Null Exception
本文关键字:Null Exception Item Selected ListBox | 更新日期: 2023-09-27 18:11:04
用户可以按如下方式单击列表框中的项目:
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
textBox2.Clear();
listBox2.Items.Clear();
string[] p =
Directory.GetFiles(
textBoxDir.Text,
listBox1.SelectedItem.ToString(),
SearchOption.AllDirectories);
foreach (string open in p)
......
}
一切正常。但是,如果用户单击ListBox中的空白区域,则会显示以下错误:
System.NullReferenceException
这是因为这行代码:
string[] p =
Directory.GetFiles(
textBoxDir.Text,
listBox1.SelectedItem.ToString(),
SearchOption.AllDirectories);
有人有聪明的工作吗?或者建议我的代码的替代方案?
解决方法是检查空值,并尽早退出。
if (listBox1.SelectedItem == null)
{
return;
}
这避免了其他答案引入的嵌套,这使得代码的可读性降低。
您可以在该行前检查SelectedIndex
:
if(listBox2.SelectedIndex < 0)
return;
if(listBox1.SelectedItem != null){
// ... do your work with listBox1.SelectedItem here
}
可以防止错误发生的。
if (listBox1.SelectedItem != null)
{
string[] p = Directory.GetFiles(textBoxDir.Text, listBox1.SelectedItem.ToString(), SearchOption.AllDirectories);
}
完整代码private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (listBox1.SelectedItem != null)
{
textBox2.Clear();
listBox2.Items.Clear();
string[] p = Directory.GetFiles(textBoxDir.Text, listBox1.SelectedItem.ToString(), SearchOption.AllDirectories);
foreach (string open in p)
...... }
}
}
先检查一下是否listbox1。
在调用该行之前,SelectedItem为空或不为空string[] p = Directory.GetFiles(textBoxDir.Text, listBox1.SelectedItem.ToString(), SearchOption.AllDirectories);
我也遇到过类似的问题。这是我修理它的最短方法。
private void button1_Click(object sender, EventArgs e)
{
radioButton1.Checked = !radioButton1.Checked;
string indicadorPais = "Something";
if (listaPaises.SelectedItem != null)
{
indicadorPais = listaPaises.SelectedItem.ToString();
label1.Text = indicadorPais;
}
作为旁注。我的条件最初是比较listaPaises.SelectedItem.ToString() != null。这是因为我正在将null转换为字符串。我发送的代码工作正常
但是这些都不允许您返回并从列表框中重新选择。仍在解决这个问题-会更新的。
while (user == null) {
try {
user = this.lstAdministratorName.SelectedItem.ToString();
} catch {
lstAdministratorName.ClearSelected();
return;
}
}