C# 如果当前列表框项具有无效属性,则阻止选择新列表框项
我的设置表单有一个列表框,其中包含自定义类的对象。自定义类几乎没有包含IP地址的属性 所有属性在表单中都有自己的文本框,它们的值保存在textbox的textchanged事件列表中。例如:C# 如果当前列表框项具有无效属性,则阻止选择新列表框项,c#,.net,winforms,listbox,C#,.net,Winforms,Listbox,我的设置表单有一个列表框,其中包含自定义类的对象。自定义类几乎没有包含IP地址的属性 所有属性在表单中都有自己的文本框,它们的值保存在textbox的textchanged事件列表中。例如: private void textBoxIP_TextChanged(object sender, EventArgs e) { item item = (item)listBox1.SelectedItem; if (item != null)
private void textBoxIP_TextChanged(object sender, EventArgs e)
{
item item = (item)listBox1.SelectedItem;
if (item != null)
{
item.IP = textBoxIP.Text;
}
listBox1.DataSource = null;
listBox1.DataSource = lista;
listBox1.DisplayMember = "name";
}
以下是SelectedIndexChanged事件的代码:
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
item item = (item) listBox1.SelectedItem;
if (item != null)
{
textBoxName.Text = item.name;
textBoxDesc.Text = item.desc;
textBoxIP.Text = item.IP.ToString();
textBoxPort.Text = item.port.ToString();
}
}
现在,如果IP地址无效,我需要一种方法来防止用户在列表框中选择一个新索引,并提供一些反馈。我不知道该怎么做。我确实有一种方法来检查返回true或false的IP字符串的有效性。如果IP无效,为什么还要将其放在列表框中
当textBoxIP.Text无效时禁用列表框。IIRC(免责声明:我已经有一段时间没有使用WinForms了),您只需将
e.Cancel=True代码>,这将导致所选索引不更改。你只需要把它包装在一个if语句中,检查表单是否不完整。不过,我似乎记不清:如果IP无效,为什么还要把它放在列表中?如果文本框IP无效,只需禁用列表框即可。@这是一个很好的观点。谢谢