Немного глупый вопрос, но застрял в течение длительного времени. Я написал два класса, один из которых представляет собой форму (класс TreeDisplay) и другую, которая содержит логику логики (класс MyTreeNode). Класс TreeDisplay содержит кнопку обзора, чтобы выбрать файл, передать его методу InitatingTree (string filename), который находится в классе MyTreeNode.
Теперь я должен передать это имя параметра string в класс MyTreeNode. Когда я запускаю свой код, XML-файл, который я выбрал, отображается в текстовом поле, но не в дереве.
Я написал часть кода, но он бросает исключение NullReferenceException (ссылка объекта не установлена в экземпляр объекта). Когда весь код был записан в Form.cs, код работал успешно, но при разделении бизнес-логики произошло исключение. Не могли бы вы рассказать мне, где я ошибаюсь?Как передать параметр строки метода из одного класса в другой класс в том же пространстве имен?
Это код в кнопку Обзор класса TreeDisplay (Моя главная форма):
if (open.ShowDialog(this) == DialogResult.OK)
{
txtFileName.Text = open.FileName;
MytreeNodeClass treenodeClass = new MytreeNodeClass();
treenodeClass.initiatingTree(open.FileName,treeView1);
}
Вот код initiatingTree() в моем классе MyTreeNode:
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);
}
С помощью точки останова treeView1.Nodes.Clear(), код выходит из этой строки и входит в блок catch, бросая NullReferenceException.
Пожалуйста, помогите найти первопричину исключения. Благодарю.
Так где же я должен сделать изменения для удаления этого исключения? –
cahnge ваш метод, чтобы принять treeview в качестве параметра, то вы можете передать его с вашего уровня пользовательского интерфейса – cjk
Если вы не возражаете, можете предоставить один синтаксис строк, как это сделать. Спасибо –