C# 空引用异常树视图

C# 空引用异常树视图,c#,view,tree,null,C#,View,Tree,Null,我的代码的这一部分不断出现空引用异常: enumerator = this.Ds_Settings1.Tables["Settings_RefreshForm_ScriptMgmt_SelectALL"].Rows.GetEnumerator(); 非常感谢您的帮助 这是全部代码。这是为了创建一个树状视图,使用一个带有存储过程的数据集列出所有脚本 private void Refresh_Form() { IEnumerator enumerator = n

我的代码的这一部分不断出现空引用异常:

  enumerator = this.Ds_Settings1.Tables["Settings_RefreshForm_ScriptMgmt_SelectALL"].Rows.GetEnumerator();
非常感谢您的帮助

这是全部代码。这是为了创建一个树状视图,使用一个带有存储过程的数据集列出所有脚本

    private void Refresh_Form()
    {
        IEnumerator enumerator = null;
        IEnumerator enumerator1 = null;
        IEnumerator enumerator2 = null;
        try
        {
            this.tv_Scripts.Nodes.Clear();
            this.tv_Scripts.Nodes.Add(Conversions.ToString(0), "Standard Fixes");
            this.tv_Scripts.Nodes.Add(Conversions.ToString(0), "SQL Agent Updates");
            this.tv_Scripts.Nodes.Add(Conversions.ToString(0), "Other");
            try
            {

                enumerator = this.Ds_Settings1.Tables["Settings_RefreshForm_ScriptMgmt_SelectALL"].Rows.GetEnumerator();
                while (enumerator.MoveNext())
                {
                    DataRow script = (DataRow)enumerator.Current;
                    try
                    {
                        enumerator1 = this.tv_Scripts.Nodes.GetEnumerator();
                        while (enumerator1.MoveNext())
                        {
                            TreeNode ParentNode = (TreeNode)enumerator1.Current;
                            if (Microsoft.VisualBasic.CompilerServices.Operators.CompareString(ParentNode.Text, script[4].ToString(), false) != 0)
                            {
                                continue;
                            }
                            ParentNode.Nodes.Add(script[1].ToString(), script[1].ToString(), 1, 1);
                            int index = ParentNode.Index;
                            this.TreeNode_SetStateImageIndex(ParentNode, Conversions.ToInteger(index.ToString()));
                        }
                    }
                    finally
                    {
                        if (enumerator1 is IDisposable)
                        {
                            (enumerator1 as IDisposable).Dispose();
                        }
                    }
                }
            }
            finally
            {
                if (enumerator is IDisposable)
                {
                    (enumerator as IDisposable).Dispose();
                }
            }
            this.cmb_Environment.Items.Clear();
            try
            {
                enumerator2 = this.Ds_Settings1.Tables["Settings_Environments_Select"].Rows.GetEnumerator();
                while (enumerator2.MoveNext())
                {
                    object env = RuntimeHelpers.GetObjectValue(enumerator2.Current);
                    object[] objArray = new object[] { 5 };
                    if (!Microsoft.VisualBasic.CompilerServices.Operators.ConditionalCompareObjectEqual(NewLateBinding.LateIndexGet(env, objArray, null), true, false))
                    {
                        continue;
                    }
                    ComboBox.ObjectCollection items = this.cmb_Environment.Items;
                    object[] objArray1 = new object[] { 1 };
                    items.Add(NewLateBinding.LateIndexGet(env, objArray1, null).ToString());
                }
            }
            finally
            {
                if (enumerator2 is IDisposable)
                {
                    (enumerator2 as IDisposable).Dispose();
                }
            }
            this.tv_Scripts.ExpandAll();
        }
        catch (Exception exception)
        {
            ProjectData.SetProjectError(exception);
            this.DisplayOnly_ErrorHandler("ERROR REFRESHING FORM DATA: ", exception.Message, MsgBoxStyle.Critical);
            ProjectData.ClearProjectError();
        }
    }
以下是堆栈跟踪:

在C:\Users\BSantiago\Documents\Visual Studio 2010\Projects\sqlrefreshttool\sqlrefreshttool\Form1.cs中的sqlrefreshttool.sqlrefreshttool.Refresh\u Form()处:第179行 在C:\Users\BSantiago\Documents\Visual Studio 2010\Projects\sqlrefreshttool\sqlrefreshttool\Form1.cs中的sqlrefreshttool.sqlrefreshttool..ctor()处:第123行 在C:\Users\BSantiago\documents\visual studio 2010\Projects\sqlrefreshttool\sqlrefreshttool\Program.cs中的sqlrefreshttool.Program.Main()处:第18行 位于System.AppDomain.\u nexecutestAssembly(程序集,字符串[]args) 位于System.AppDomain.ExecuteAssembly(字符串汇编文件、证据汇编安全性、字符串[]args) 在Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()上 位于System.Threading.ThreadHelper.ThreadStart\u上下文(对象状态) 在System.Threading.ExecutionContext.Run(ExecutionContext ExecutionContext,ContextCallback回调,对象状态) 位于System.Threading.ThreadHelper.ThreadStart()处


NullReferenceException告诉您正在尝试访问null对象上的属性或方法。虽然类型兼容(无编译时错误),但由于为对象的类型定义了attr/method,因此在运行时,您的对象被证明为null

有两个可能的原因:

或者

this.Ds_Settings1

是空的

在调试模式下检查它们中的每一个


异常不太可能是由行引起的,因为这应该是一个空列表,并且不为null,即使您的表没有行。

您可以发布堆栈跟踪吗?
this.Ds_Settings1.Tables["Settings_Environments_Select"]