WinForms - TreeViev, osobny event dla kliknięcia na Node i dla tła kontrolki

0

Witam, próbuje i próbuję ale wciąż nie potrafię tego rozwiązać.

Mam formę i na nią wrzucony TreeView zdockowany więc jest na całej formie i teraz chce sprawdzić czy kliknięcie myszki nastąpiło na jakimś root nodzie czy też na reszcie wolnego miejsca TreeView czyli po prostu na tle i nie potrafię tego odseparować.

Próbowałem najróżniejszych rozwiązań z SO i Googli ale chyba coś źle próbuję, za każdą pomoc dzięki.

Kodu nie dorzucam bo to po prostu forma z treeview zdockowanym.

0

hi, to moja pierwsza odpowiedz na tym forum :)

Chyba (bo nie jestem pewien) co wewnatrz klikniemy to autorem zdarzenia jest TreeView.
chcac wykonac akcje dowolnym node uzyc:
AfterSelect
a na wezle ktory ma wewnatrz inne mozna cos takiego:

private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            var selectedNode = ((TreeView)sender).SelectedNode;
            int childsNumber = selectedNode.Nodes.Count;
            if (childsNumber > 0)
            {
                MessageBox.Show(selectedNode.ToString());
            }
        }
0
         int formsLocationX;
         int formsLocationY;

         private void Form1_Load(object sender, EventArgs e)
        {
            formsLocationX = this.Location.X;
            formsLocationY = this.Location.Y;
        }

        private void treeView1_Click(object sender, EventArgs e)
        {
            TreeNode treeNode = treeView1.SelectedNode;

            int x = treeNode.Bounds.X + treeNode.Bounds.Width;
            int y = treeNode.Bounds.Location.Y + treeNode.Bounds.Height;

            if ((System.Windows.Forms.Cursor.Position.X > x + formsLocationX) && (System.Windows.Forms.Cursor.Position.Y > y + formsLocationY))
            {
                MessageBox.Show("Selected Object");
            }
            else
            {
                MessageBox.Show("Selected Nodes");
            }
        }

1 użytkowników online, w tym zalogowanych: 0, gości: 1