Petite question stupide, mais est resté bloqué pendant une longue période. J'ai écrit deux classes une qui est un formulaire (classe TreeDisplay) et l'autre qui contient la logique de buiseness (classe MyTreeNode). La classe TreeDisplay contient un bouton Parcourir pour sélectionner un fichier et le transmettre à une méthode InitiatingTree (nom de fichier de la chaîne) qui se trouve dans la classe MyTreeNode.
Maintenant, je dois passer ce paramètre de chaîne de caractères à la classe MyTreeNode. Lorsque j'exécute mon code, le fichier XML que j'ai sélectionné est affiché dans la zone de texte mais pas dans l'arborescence.
J'ai écrit la partie de code mais elle lance NullReferenceException (Référence d'objet non définie sur une instance d'un objet). Lorsque le code entier était écrit dans Form.cs, le code était exécuté avec succès, mais en séparant la logique métier, l'exception s'est produite. Pouvez-vous me dire où je me trompe?Comment passer le paramètre de chaîne d'une méthode d'une classe à une autre classe dans le même espace de noms?
Voici le code dans le bouton Parcourir de classe ArbreAfficher (Ma principale forme):
if (open.ShowDialog(this) == DialogResult.OK)
{
txtFileName.Text = open.FileName;
MytreeNodeClass treenodeClass = new MytreeNodeClass();
treenodeClass.initiatingTree(open.FileName,treeView1);
}
Voici le code de initiatingTree() dans ma classe 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);
}
Sur l'utilisation de points d'arrêt treeView1.Nodes.Clear(), le code sort de cette ligne et entre dans le bloc catch en lançant NullReferenceException.
Veuillez aider à trouver la cause de l'exception. Merci.
alors où dois-je faire la changements pour supprimer cette exception? –
cahnge votre méthode pour accepter l'arbre comme paramètre, alors vous pouvez le passer de votre couche d'interface utilisateur – cjk
Si cela ne vous dérange pas pouvez-vous fournir une syntaxe de ligne comment faire cela .. Merci –