Kleine dumme Frage, aber blieb für eine lange Zeit stecken. Ich habe zwei Klassen geschrieben, die eine Form (TreeDisplay-Klasse) und andere, die Buiseness-Logik (MyTreeNode-Klasse) enthält. TreeDisplay-Klasse enthält Durchsuchen-Schaltfläche, um eine Datei auszuwählen, übergeben Sie es an eine Methode initialingTree (Zeichenfolge Dateiname), die in MyTreeNode-Klasse ist.
Jetzt muss ich diesen String-Parameter-Dateinamen MyTreeNode-Klasse übergeben. Wenn ich meinen Code ausführe, wird die XML-Datei, die ich ausgewählt habe, in der Textbox angezeigt, aber nicht in der Baumansicht.
Ich habe den Teil des Codes geschrieben, aber es wirft NullReferenceException (Objektreferenz nicht auf eine Instanz eines Objekts festgelegt). Wenn der gesamte Code in Form.cs geschrieben wurde, wurde der Code erfolgreich ausgeführt, aber beim Trennen der Geschäftslogik ist die Ausnahme aufgetreten. Können Sie mir bitte sagen, wo ich falsch liege? Wie übergeben Sie den String-Parameter einer Methode von einer Klasse an eine andere Klasse im selben Namespace?
Dies ist der Code in Schaltfläche Durchsuchen der Baumanzeige Klasse (Meine Hauptform):
if (open.ShowDialog(this) == DialogResult.OK)
{
txtFileName.Text = open.FileName;
MytreeNodeClass treenodeClass = new MytreeNodeClass();
treenodeClass.initiatingTree(open.FileName,treeView1);
}
Hier ist der Code von initiatingTree() in meiner MyTreeNode Klasse:
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);
}
auf Breakpoint mit treeView1.Nodes.Clear(), der Code kommt aus dieser Zeile und gibt den catch-Block ein, der NullReferenceException auslöst.
Bitte helfen Sie die Ursache der Ausnahme zu finden. Vielen Dank.
so sortieren, wo ich das machen zu tun haben, Änderungen, um diese Ausnahme zu entfernen? –
ändern Sie Ihre Methode, um die Treeview als Parameter zu akzeptieren, dann können Sie es von Ihrer UI-Ebene – cjk
übergeben Wenn Sie nichts dagegen haben können Sie eine Zeile Syntax wie das zu tun .. Danke –