0

このような情報を表示するツリーリストビューを作成しようとしています

ComputerName(String)
  -> OS(String)
  -> Drives(String)
      -> DriveLabel(String)

理由はわかりませんが、オブジェクト モデルに基づいてツリー ビューを作成できません。何が起こっているのでしょうか? 私はしばらくこれをいじっていましたが、おそらく自分自身を混乱させただけかもしれませんが、このコントロールを使用するのはそれほど難しいことではありません....どんな助けも大歓迎です. ありがとう!

これが私のクラスです

public class ComputerInfo
{
   public string ComputerName { get; set; }
   public string OS { get; set; }
   public string Pingable { get; set; }

   public List<string> Memory { get; set; }
   public List<string> Drives { get; set; }

   public ComputerInfo()
   {
      this.Memory = new List<string>();
      this.Drives = new List<string>();
   }
}

私が読んだことから、ロードアップ中にデリゲートコードを配置する必要があります

public Form1()
{
   InitializeComponent();

   this.treeListView1.CanExpandGetter = delegate(object x)
   {
      return true;
   };
   this.treeListView1.ChildrenGetter = delegate(object x)
   {
      NetworkDefrag.DefragClass.ComputerInfo pc = x as NetworkDefrag.DefragClass.ComputerInfo;
      return pc.Drives;
   };
}

これが実際の作業のコードです

public void work2(string line)
{
   NetworkDefrag.DefragClass.ComputerInfo computer = new DefragClass.ComputerInfo();
   computer.ComputerName = line;

   //1
   bool pingable = false;
   Task pingTask = new Task(() => pingable = PingHost(line));
   pingTask.Start();
   pingTask.Wait();

   //2
   if (pingable.Equals(true))
   {
      TreeNode servernameNode = new TreeNode(line);
      computer.Pingable = "Server is online";

      //3
      //var drives = GetDrives(line, domaintextBox3.Text, usernametextBox1.Text, passwordtextBox2.Text);
      List<string> drives = new List<string>();
      Task drivesTask = new Task(() => drives = GetDrives(line, domaintextBox3.Text, usernametextBox1.Text, passwordtextBox2.Text));

      computer.Drives.AddRange(drives);

      drivesTask.Start();
      drivesTask.Wait();

      //4
      foreach (string drive in drives)
      {
         //TreeNode driveNode = new TreeNode(drive);

         //5
         string fragNeeded = string.Empty;
         //var fragNeeded = GetFragPercentage(line, drive, usernametextBox1.Text, passwordtextBox2.Text);
         Task fragNeededTask = new Task(() => fragNeeded = GetFragPercentage(line, drive, usernametextBox1.Text, passwordtextBox2.Text));
         fragNeededTask.Start();
         fragNeededTask.Wait();
         //var fragPercentage = GetFragPercentage(line, drive, usernametextBox1.Text, passwordtextBox2.Text);
         if (fragNeeded.Equals("True"))
         {
            TreeNode driveNode = new TreeNode(drive);
            driveNode.BackColor = Color.Red;
            driveNode.Checked = true;
            servernameNode.Checked = true;
            InsertIntoTree2(servernameNode, driveNode);
         }
         if (fragNeeded.Equals("False"))
         {
            TreeNode driveNode = new TreeNode(drive);
            driveNode.BackColor = Color.Green;
            InsertIntoTree2(servernameNode, driveNode);
         }
      }
      Servers.Add(computer);
      InsertIntoTree(servernameNode);

      //treeListView1.UpdateObjects(Servers);
      treeListView1.RefreshObject(computer);

   }

}

アップデート:

列エディターでアスペクト値を割り当てていませんでしたが、これを修正したので、ノードにテキストが表示されました! 私の問題は、実際には子ノード (ドライブ ノード) にあり、それらは期待どおりに表示されません (展開可能)。 ここに画像の説明を入力

4

0 に答える 0