/ / Come posso selezionare più nodi contemporaneamente dal controllo Treeview usando C # e Visual Studio 2013 - c #, winforms, treeview

Come faccio a selezionare più nodi alla volta dal controllo TreeView utilizzando C # e Visual Studio 2013 - c #, winforms, treeview

Ecco il codice per creare la struttura ad albero dal database nel controllo treeview dei moduli di Windows e la mia tabella contiene Id, Title, Pid, DescId attributi. e sì, sto chiamando questo metodo solo all'interno di un evento clic sul pulsante in questo modo: - CreateTree(null, 0);

Proprietà di treeview che ho già fatto checkboxes==true quindi da questo quando popolano gli alberi si unirono con la casella di controllo e i nodi della treeview.

    //Create the tree from the database
private void CreateTree(TreeNode n, int hdrID)
{
System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(@"Data Source=(LocalDB)v11.0;AttachDbFilename=D:DNPOpening pptOpening pptBuilder.mdf;MultipleActiveResultSets = True;Integrated Security=True;Connect Timeout=30");
con.Open();
SqlCommand cmd = new SqlCommand("SELECT Id,Title FROM Presentation WHERE Pid=" + hdrID, con);
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
TreeNode t = new TreeNode(rdr["Title"].ToString());
CreateTree(t, Convert.ToInt16(rdr["Id"].ToString()));
if (n == null)
{
treeView1.Nodes.Add(t);
//t.ImageIndex = 0;
}
else
{
n.Nodes.Add(t);
}
}
rdr.Close();
}

risposte:

1 per risposta № 1
private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
{
if (e.Action != TreeViewAction.Unknown)
{
if (busy) return;
busy = true;
try
{
TreeNode _node = e.Node;

checkNodes(e.Node, e.Node.Checked);
if (e.Node.Checked)
{
MessageBox.Show(e.Node.Text);
}
}


finally
{
busy = false;
}
}

}

private void checkNodes(TreeNode node, bool check) { foreach (TreeNode child in node.Nodes) { if (child.Checked == true) { MessageBox.Show(child.Text); } //MessageBox.Show(child.Text); checkNodes(child, check); } }


0 per risposta № 2

Questa domanda è stata posta più volte e la risposta è: è possibile, ma non banale.

nativo TreeView il controllo non consente la selezione multipla, ma è possibile derivarne una sottoclasse e sovrascrivere alcuni comportamenti per farlo funzionare.

Personalmente non lo consiglio, dal momento che non è facile farlo bene. Ti suggerisco di cercare alcuni controlli che potrebbero fare il lavoro.

si prega di controllare questo sito, dà un TreeView controllo che consente la selezione multipla e anche i dettagli tecnici :)


0 per risposta № 3

Sono d'accordo con nevets - è una vera seccatura fare la selezione multipla con il TreeView controllo.

Nei miei progetti che uso ObjectListView anziché. Lo uso in sostituzione di WinForm ListView e TreeView controlli. Supporta la selezione multipla, le viste ad albero con più colonne e molto altro!