如何将方法的字符串参数从一个类传递到同一个命名空间中的另一个类?

cra*_*gal 0 c# class winforms

有点傻问题,但长时间陷入困境.我写了两个类,一个是Form(TreeDisplay类),另一个是包含buiseness逻辑(MyTreeNode类).TreeDisplay类包含用于选择文件的浏览按钮,将其传递给MyTreeNode类中的方法 initiatingTree(字符串文件名).
现在我必须将此字符串参数filename传递给MyTreeNode类.当我运行我的代码时,我选择的XML文件显示在文本框中,但不显示在树视图中.
我编写了代码的一部分,但它抛出了NullReferenceException(对象引用未设置为对象的实例).当整个代码在Form.cs中编写时,代码运行成功,但在分离业务逻辑时发生了异常.你能告诉我我哪里错了吗?

这是TreeDisplay类(我的主窗体)的Browse按钮中的代码:

if (open.ShowDialog(this) == DialogResult.OK)
        {
            txtFileName.Text = open.FileName;
            MytreeNodeClass treenodeClass = new MytreeNodeClass();
            treenodeClass.initiatingTree(open.FileName,treeView1); 
        }
Run Code Online (Sandbox Code Playgroud)

这是我的MyTreeNode类中的initiatingTree()代码:

public class MytreeNodeClass
{

    private readonly System.Windows.Forms.TextBox txtFileName;
    private TreeView treeView1;
    private readonly ToolStripStatusLabel toolStripStatusLabel1;

   public string Filename
    {
        get { return filename; }
    }
    protected string filename;

    public MytreeNodeClass()
    {
    }

    public void initiatingTree(string nameofFile,TreeView treeView1)
    {
        try
        {
            //Create XML document & load the XML file.
            XmlDocument xmlDocument = new XmlDocument();
            xmlDocument.Load(nameofFile);
            treeView1 = new System.Windows.Forms.TreeView();
            treeView1.Nodes.Clear();

            if (xmlDocument.DocumentElement != null)
            {
                TreeNode treeNodedoc = new TreeNode(xmlDocument.DocumentElement.Name);

                treeView1.Nodes.Add(treeNodedoc);
            }
Run Code Online (Sandbox Code Playgroud)

在使用断点treeView1.Nodes.Clear()时,代码从此行发出并进入catch块抛出NullReferenceException.

请帮助找到异常的根本原因.谢谢.

cjk*_*cjk 5

treeView1在断点处的价值是多少?

我建议这可能为null,因为您的业务逻辑层中没有该引用.


更新了示例代码:

public void initiatingTree(string nameofFile, TreeView treeView1)
{
    try
    {
        //Create XML document & load the XML file.
        XmlDocument xmlDocument = new XmlDocument();
        xmlDocument.Load(nameofFile);

        treeView1.Nodes.Clear();

        if (xmlDocument.DocumentElement != null)
        {
            TreeNode treeNodedoc = new TreeNode(xmlDocument.DocumentElement.Name);

            treeView1.Nodes.Add(treeNodedoc);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

你在哪里称之为:

if (open.ShowDialog(this) == DialogResult.OK)
{
    txtFileName.Text = open.FileName;
    MytreeNodeClass treenodeClass = new MytreeNodeClass();
    treenodeClass.initiatingTree(open.FileName, treeView1); 
}
Run Code Online (Sandbox Code Playgroud)