【发布时间】:2019-10-15 02:23:56
【问题描述】:
好的 - 我有点困惑。我有一行代码放入 Try.Catch - 它给了我以下信息:
对象引用未设置为对象的实例。
代码行是:
MainFormRef.xtraTabControl_Results.TabPages.Add(xtraTabPage_Results);
这些是 DevExpress 控件。
在这里,我将在例程开始时创建的 TabPage 添加到 TabControl_Results,这是我放置在表单上的控件。所以 - 我知道这两个对象都存在。我什至添加了引用它们的代码 - 它不会引发异常。
同样——这是我从代码中的另一个地方调用的例程——它运行良好。所以 - 我正在做的事情一定会导致当前代码路径中出现此错误。但我不得不承认我很困惑。
有没有办法判断哪个对象引用是空的?导致异常的代码行中的任何一个对象似乎都不是??
任何建议将不胜感激!
代码 - 导致异常
public DevExpress.XtraTab.XtraTabPage AddResultGridTabObject()
{
DevExpress.XtraTab.XtraTabPage xtraTabPage_Results = new DevExpress.XtraTab.XtraTabPage();
var NewTabObject = new UserControl_ResultsTab();
NewTabObject.TrackerId = SavedTrackerId;
NewTabObject.FormType = TAIIDFormType.ftResultsGrid;
TabList.Add(NewTabObject);
xtraTabPage_Results.Controls.Add(NewTabObject); // Add to the Collection
NewTabObject.Dock = DockStyle.Fill; // Now have it take up the entire Tab
try
{
MessageBox.Show("Name: " +
MainFormRef.xtraTabControl_Results.TabPages.Count.ToString());
MainFormRef.xtraTabControl_Results.TabPages.Add(xtraTabPage_Results);
}
catch (Exception Error)
{
MessageBox.Show("Error while Saved Encrypted File: " + Error.Message);
}
MainFormRef.xtraTabControl_Results.SelectedTabPage = xtraTabPage_Results;
return xtraTabPage_Results;
}
【问题讨论】:
-
通常我会通过调试器检查每个变量来逐步执行代码。
-
我没有 DevExpress,但我的另一个想法是,
XtraTabPage控件可能需要设置某些属性,而该属性尚未设置。跨度> -
您可以在代码中添加检查以确定什么为空。
-
John,我将不得不与 DevExpress 核对 - 因为我在此代码中检查的每个变量 - 都显示为已分配...如果我发现发生了什么我会更新它...
-
大家好 - 感谢您的回复!我一直在使用调试器并跟踪代码——但每个对象似乎都被正确分配了(?)——但我仍然得到空引用。 MainFormRef.xtraTabControl_Results.TabPages.Add(xtraTabPage_Results);此行上的对象和“NewTabObject”均已分配且不为空。我不得不承认我很困惑……我会向 DevExpress 确认可能发生的事情……