少しばかげた質問ですが、長い間立ち往生しています。 Form(TreeDisplayクラス)とbuisenessロジック(MyTreeNodeクラス)を含むクラスの2つのクラスを作成しました。 TreeDisplayクラスには、ファイルを選択するブラウズボタンが含まれています。initiatingTree(文字列ファイル名) MyTreeNodeクラスにあります。
この文字列パラメータのファイル名を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()、この行からコードが出力され、NullReferenceExceptionをスローするcatchブロックに入ります。
例外の根本原因を見つけるお手伝いをしてください。ありがとう。
のための制御の相互作用
ビジネスレイヤのためにあなたのコード
(グイ・レイヤー)分離コードをソートする方法の例ので、私は確認する必要がありますこの例外を削除するための変更? –
あなたのメソッドがパラメータとしてツリービューを受け入れるようにしたら、あなたのUIレイヤーから渡すことができます – cjk
もしあなたが気にしないなら、それを行うための1行の構文を与えることができます..ありがとう –