none
ListView suchen mit treeView RRS feed

  • Frage

  • Hallo alle zusammen!

    Ich habe ein Problem. Und zwar habe ich eine listView mit 6 Spalten... Links davon habe ich einen treeView mit verschiedenen Elementen.

    Problem:

    Das treeView beeinhaltet Kategorien, bsow. Beruf, Gesundheit, usw. Diese Kategorien sind unter anderem auch in der listView in der 5. Spalte vorhanden. Nun soll das treeView Element, was selektiert wurde, in der 5.Spalte der listView gesucht werden und dann hervorgehoben werden. Sozusagen, schnelle Suche von Kategorien. Soweit alles verstanden?

    Hier ein Bild:
    https://postimg.cc/2bDJ5Cp6 

    Habt ihr Ideen?

    Vielen Dank,

    Henrik

    Sonntag, 25. November 2018 20:12

Antworten

  • Hi Henrik,
    nachfolgend eine kleine Demo, wie man Deine Frage lösen könnte:

    using System;
    using System.Drawing;
    using System.Windows.Forms;
    
    namespace WindowsFormsApp1
    {
      public partial class Form41 : Form
      {
        public Form41()
        {
          InitializeComponent();
        }
    
        private TreeView tv = new TreeView() { Dock = DockStyle.Left };
        private ListView lv = new ListView() { Dock = DockStyle.Fill };
    
        private void Form41_Load(object sender, EventArgs e)
        {
          this.Controls.AddRange(new Control[] { lv, tv });
          this.FillTreeView();
          this.tv.AfterSelect += Tv_AfterSelect;
          this.FillListView();
        }
    
        private void Tv_AfterSelect(object sender, TreeViewEventArgs e)
        {
          MyTreeNode node = tv.SelectedNode as MyTreeNode;
          if (node != null)
            foreach (MyItem item in this.lv.Items)
              item.BackColor = (item.Kat == node.Kat) ? Color.Red : Color.White;
        }
    
        private void FillTreeView()
        {
          for (int i = 1; i < 10; i++) this.tv.Nodes.Add(new MyTreeNode() { Text = $"Knoten {i}", Kat = i });
        }
        private void FillListView()
        {
          for (int i = 1; i < 10; i++) this.lv.Items.Add(new MyItem() { Text = $"Item {i}", Kat = i });
        }
    
        internal class MyTreeNode : TreeNode { internal int Kat { get; set; } }
    
        internal class MyItem : ListViewItem { internal int Kat { get; set; } }
    
      }
    }
    


    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP für Developer Technologies)
    Meine Homepage mit Tipps und Tricks

    Montag, 26. November 2018 06:21

Alle Antworten

  • Hi Henrik,
    nachfolgend eine kleine Demo, wie man Deine Frage lösen könnte:

    using System;
    using System.Drawing;
    using System.Windows.Forms;
    
    namespace WindowsFormsApp1
    {
      public partial class Form41 : Form
      {
        public Form41()
        {
          InitializeComponent();
        }
    
        private TreeView tv = new TreeView() { Dock = DockStyle.Left };
        private ListView lv = new ListView() { Dock = DockStyle.Fill };
    
        private void Form41_Load(object sender, EventArgs e)
        {
          this.Controls.AddRange(new Control[] { lv, tv });
          this.FillTreeView();
          this.tv.AfterSelect += Tv_AfterSelect;
          this.FillListView();
        }
    
        private void Tv_AfterSelect(object sender, TreeViewEventArgs e)
        {
          MyTreeNode node = tv.SelectedNode as MyTreeNode;
          if (node != null)
            foreach (MyItem item in this.lv.Items)
              item.BackColor = (item.Kat == node.Kat) ? Color.Red : Color.White;
        }
    
        private void FillTreeView()
        {
          for (int i = 1; i < 10; i++) this.tv.Nodes.Add(new MyTreeNode() { Text = $"Knoten {i}", Kat = i });
        }
        private void FillListView()
        {
          for (int i = 1; i < 10; i++) this.lv.Items.Add(new MyItem() { Text = $"Item {i}", Kat = i });
        }
    
        internal class MyTreeNode : TreeNode { internal int Kat { get; set; } }
    
        internal class MyItem : ListViewItem { internal int Kat { get; set; } }
    
      }
    }
    


    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP für Developer Technologies)
    Meine Homepage mit Tipps und Tricks

    Montag, 26. November 2018 06:21
  • Danke für deine Demo,

    bei mir meckert aber:

          MyTreeNode node = tv.SelectedNode as MyTreeNode;
    

    ListView enthält keine Definition für SelectedNode....

    Donnerstag, 29. November 2018 11:08
  • Hi Klaus,
    mein gezeigtes WindowsForms Beispiel basiert bei mir auf dem Framework 4.7. Hast Du das Beispiel unverändert in den Codeteil einer leeren Form eines Windows Forms Projektes kopiert und gestartet? Wenn nein, da zeige mal die Veränderungen/Anpassungen/Abweichungen. tv ist in meinem Beispiel ein TreeView und da kann keine Fehler wegen fehlendem SelectedNode in einem ListView kommen.

    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP für Developer Technologies)
    Meine Homepage mit Tipps und Tricks

    Donnerstag, 29. November 2018 13:45