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 № 1private 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!