ايران ويج

نسخه‌ی کامل: TreeView
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
با سلام
من يه مثال در مورد اضافه كردن زير شاخه ها در TreeView و همگام كردنش با ListView ميخوام
اگه امكانش برا دوستان هست لطفا برام بذ ارن
سپاسگذارم
اسم لیست : lvwBuild
اسم treeview هست : tbView



کد:
Hashtable nodes = new Hashtable();

foreach (ListViewItem item in lvwBuild.Items)
{
string nodeName = item.Text;
string childName = "";
TreeNode newNode;

if (nodes[nodeName] == null)
{
newNode = new TreeNode(nodeName);
nodes[nodeName] = newNode;
tvView.Nodes.Add(newNode);
}
else
{
newNode = (TreeNode) nodes[nodeName];
}

if (item.SubItems.Count > 1)
{
childName = item.SubItems[1].Text;
TreeNode childNode = new TreeNode(childName);

if (nodes[childName] == null)
{
nodes[childName] = childNode;
newNode.Nodes.Add(childNode);
}
}
با سلام
mamadجان بسيار عالي بود . چند تا سوال ديگه در اين مورد هست كه ممنون ميشم اونها رو هم جواب بدين .
اگه بخايم يه آيتم به TreeViewاضافه كنيم خوب منويسيم
;(treeView1.Nodes.Add("A", "hamid",1

حالا اگه بخايم كه Arash و koorosh رو زير شاخه hamid قرار بديم از چه كدي استفاده ميكنيم؟

بعد هم كدي كه گذاشتيد آيتمهاي List رو توي Tree نشون ميده اگه بخوايم بر عكسش بشه راهش چيه كه وقتي گره ها رو باز ميكنيم آيتمهاي داخلش در List نمايان بشه
و اگر بخايم برا هر آيتم در List يه رويداد Click داشته باشيم راهش چيه؟
من و از اين كه زياد سوال كردم ببخشيد
متشكرم
با اجازه آقا محمد.
hamidsina نوشته است:اگه بخايم يه آيتم به TreeViewاضافه كنيم خوب منويسيم
;(treeView1.Nodes.Add("A", "hamid",1
حالا اگه بخايم كه Arash و koorosh رو زير شاخه hamid قرار بديم از چه كدي استفاده ميكنيم؟
کد php:
TreeNode tn treeView1.Nodes.Add("A""hamid"1);
            
tn.Nodes.Add("A1""Arash"0);
            
tn.Nodes.Add("A2""koorosh"0); 

hamidsina نوشته است:بعد هم كدي كه گذاشتيد آيتمهاي List رو توي Tree نشون ميده اگه بخوايم بر عكسش بشه راهش چيه كه وقتي گره ها رو باز ميكنيم آيتمهاي داخلش در List نمايان بشه
کد php:
listView1.Items.Clear();
            foreach (
TreeNode node in e.Node.Nodes)
            {
                
listView1.Items.Add(node.Namenode.Text0);
            } 

hamidsina نوشته است:و اگر بخايم برا هر آيتم در List يه رويداد Click داشته باشيم راهش چيه؟
صراحتا رویدادی برای click برای هر آیتم نیست ولی شما میتونی با استفاده از رویدادهای ItemSelectionChanged یا SelectedIndexChanged اینکارو بکنید.
واقعا دستتون درد نكنه خيلي كمكم كردين
فقط خواهش ميكنم يه توضيح بيشتري در مورد سوال آخري بدين
متشكرم و مرسي
رویداد SelectedIndexChanged وقتی اتفاق میفته که مجموعه System.Windows.Forms.ListView.SelectedIndices تغییر پیدا کنه یا به عبارت دیگه وقتی مجموعه آیتم های انتخاب شده تغییر بکنه یعنی یکی دیگه انتخاب بشه یا یکی از انتخاب در بیاد. البته این رویداد نمیگه که چی تغییر کرده.
رویداد ItemSelectionChanged وقتی اتفاق میفته که حالت انتخاب بودن برای یه آیتم تغییر کنه (انتخاب بشه یا از انتخاب بیرون بیاد). این رویداد مشخص میکنه که کدوم آیتم این اتفاق براش افتاده.

برای این کار فکر کنم ItemSelectionChanged بهتر باشه.مثلا این:
کد php:
private void listView1_ItemSelectionChanged(object senderListViewItemSelectionChangedEventArgs e)
        {
            
MessageBox.Show("Item :" e.Item.Text " is " + (e.IsSelected?"Selected":"Deselected"));
        } 
میاد دقیقا میگه که چه آیتمی الان انتخاب شد و چه آیتمی از انتخاب در اومد.
باز هم از اين كه اين سولات رو با نهايت زيبايي و حوصله پاسخ دادين ازتون تشكر ميكنم
مرسي
خدا نگهدار