应用程序在文本框文本更改事件上崩溃
本文关键字:文本 事件 崩溃 应用程序 | 更新日期: 2023-09-27 18:35:49
伙计们,我遇到了一些问题,我正在使用实体框架,并且在文本更改事件中,我必须过滤记录并且必须使用autocompleteSource进行分配,但我不知道为什么应用程序崩溃,我已经搜索但仍然没有找到富有成效的结果。请帮忙。这是代码:
AutoCompleteStringCollection ChartCollection = new AutoCompleteStringCollection();
txtChartNo.AutoCompleteCustomSource.Clear();
if (txtChartNo.Text.Trim() != string.Empty &&
Convert.ToString(txtChartNo.Text.Trim()).Length > 0)
{
List<Patient> pat =
PatientManager
.GetByChartNoForAutoComplete(Convert.ToString(txtChartNo.Text))
.ToList();// fetching data from db using EF
if (pat.Count > 0)
{
pat.ForEach(f =>
{
ChartCollection.Add(f.ChartNo + " - " + f.FullName);
});
txtChartNo.AutoCompleteCustomSource = ChartCollection;
}
}
由于没有异常消息,我可以指出在此代码中可能遇到的两个潜在问题。
首先,pat
收藏可能是null
。如果是这种情况,对此进行任何操作都会导致NullReferenceException
。防范null
将足以解决问题。
if (pat != null && pat.Count > 0)
{
// any operation on pat collection.
}
第二种可能性是,在访问集合之前,可能会释放数据上下文。我猜你在GetByChartNoForAutoComplete
方法中调用using
块中的数据上下文。如果在块内您不调用ToList()
那么实际上您不会获取数据。在代码段中调用数据时,代码会尝试检索数据ToList
但此时数据上下文已释放。
这两个建议都有点长镜头,但由于您提供的信息非常有限,因此很难给出更准确的信息。
作为旁注,有很多地方可以改进您的代码。 TextBox.Text
不需要转换为字符串。此外,要检查字符串是否为空,请使用 string.IsNullOrEmpty
。