C# 组合框,在焦点丢失事件上将文本值分配给变量?
C# combobox, assign text value to variable on focus lost event?
我有一个加载了客户 ID 的组合框。我有一个函数可以在选择组合框项目时执行一些查询,但是如果用户输入一个值,当前功能不会执行任何操作。我正在尝试使用组合框的焦点丢失事件来实现此功能,但是我当前的尝试在焦点丢失时返回空值。
我正在添加一个事件处理程序作为
cbxCustID.LostFocus += new EventHandler(cbxCustID_LostFocus);
函数如下
private void cbxCustID_LostFocus(object sender, EventArgs e)
{
string currentText = cbxCustID.SelectedValue.ToString(); // <-- error on this line
loadName(currentText);
loadDGV(currentText);
}
即使选择了组合框项目,但在组合框上失去焦点也会产生以下错误。 "System.NullReferenceException: 'Object reference not set to an instance of an object.'"
如果有人有任何建议或能够在正确的方向上提供帮助,我们将不胜感激。
如果 SelectedValue
是 null
并且您尝试对其调用 ToString
方法,您将收到该错误。
您可以尽早使用 ?.
null conditional operator 到 return null
并避免异常:
string currentText = cbxCustID.SelectedValue?.ToString();
现在,根据您的需要,在调用其他方法之前,您可能仍需要检查 currentText
是否为 null
:
private void cbxCustID_LostFocus(object sender, EventArgs e)
{
string currentText = cbxCustID.SelectedValue?.ToString();
if (currentText != null)
{
loadName(currentText);
loadDGV(currentText);
}
}
使用 Text
属性:
private void cbxCustID_LostFocus(object sender, EventArgs e)
{
string currentText = cbxCustID.Text;
loadName(currentText);
loadDGV(currentText);
}
我有一个加载了客户 ID 的组合框。我有一个函数可以在选择组合框项目时执行一些查询,但是如果用户输入一个值,当前功能不会执行任何操作。我正在尝试使用组合框的焦点丢失事件来实现此功能,但是我当前的尝试在焦点丢失时返回空值。
我正在添加一个事件处理程序作为
cbxCustID.LostFocus += new EventHandler(cbxCustID_LostFocus);
函数如下
private void cbxCustID_LostFocus(object sender, EventArgs e)
{
string currentText = cbxCustID.SelectedValue.ToString(); // <-- error on this line
loadName(currentText);
loadDGV(currentText);
}
即使选择了组合框项目,但在组合框上失去焦点也会产生以下错误。 "System.NullReferenceException: 'Object reference not set to an instance of an object.'"
如果有人有任何建议或能够在正确的方向上提供帮助,我们将不胜感激。
如果 SelectedValue
是 null
并且您尝试对其调用 ToString
方法,您将收到该错误。
您可以尽早使用 ?.
null conditional operator 到 return null
并避免异常:
string currentText = cbxCustID.SelectedValue?.ToString();
现在,根据您的需要,在调用其他方法之前,您可能仍需要检查 currentText
是否为 null
:
private void cbxCustID_LostFocus(object sender, EventArgs e)
{
string currentText = cbxCustID.SelectedValue?.ToString();
if (currentText != null)
{
loadName(currentText);
loadDGV(currentText);
}
}
使用 Text
属性:
private void cbxCustID_LostFocus(object sender, EventArgs e)
{
string currentText = cbxCustID.Text;
loadName(currentText);
loadDGV(currentText);
}