private void treeView1_MouseClick(object sender, MouseEventArgs e)
{
// Get the node that was clicked
TreeNode selectedNode = treeView1.HitTest(e.Location).Node;
if (selectedNode != null)
{
}
}
หากฉันมีตัวอย่างโหนดรูท:
World
เมื่อฉันคลิก ฉันเห็นโหนดเหล่านี้:
World
|____ Blue
|____ Green
|____ Red
|____ Black
|____ yellow
ถ้าฉันคลิกที่ สีน้ำเงิน ฉันจะเห็นโหนดเพิ่มเติมภายใต้ สีน้ำเงิน เป็นต้น
World
|____ Blue
| |____ Day
| |____ Night
|____ Green
|____ Red
|____ Black
|____ yellow
ตอนนี้ถ้าฉันคลิกที่สีน้ำเงิน ฉันจะได้รับชื่อโหนดที่เลือก สีน้ำเงิน selectedNode.Name
จะเป็น สีน้ำเงิน
และถ้าฉันคลิกที่ วัน จะได้ใน selectedNode.Name
วัน แต่สิ่งที่ฉันต้องการทำคือ ถ้าฉันคลิกที่ วัน selectedNode
จะเป็น บลู\เดย์ หรือ บลูเดย์
และถ้าภายใต้ วัน มีชื่อโหนดอื่น 1 และฉันคลิกที่ 1 ดังนั้นใน selectedNode.Name ฉันต้องการ เพื่อดู BlueDay1 หรือฉันชอบ Blue\Day\1
ฉันต้องการ \\
นี้เพื่อใช้เป็นชื่อไดเร็กทอรี ปัญหาคือฉันใช้ selectedNode.Name
เป็นไดเรกทอรีเพื่อรับไฟล์:
List<string> ff = new List<string>();
private void treeView1_MouseClick(object sender, MouseEventArgs e)
{
TreeNode selectedNode = treeView1.HitTest(e.Location).Node;
if (selectedNode != null)
{
string tt = mainPath + "\\" + selectedNode.Text;
ff = DirSearch(tt);
timer1.Enabled = true;
}
}
ถ้าฉันคลิกสีน้ำเงิน ก็ไม่เป็นไร ไฟล์ทั้งหมดจะอยู่ในสีน้ำเงินรวมถึงไดเร็กทอรีย่อยด้วย แต่ถ้าฉันคลิกที่ 1 และมีไฟล์ใน 1 มันจะไม่ได้รับไฟล์ใดๆ เนื่องจากฉันต้องการชื่อพาธแบบเต็ม Blue\Day\1 เพื่อรับไฟล์จาก 1
นี่คือวิธีที่ฉันได้รับไฟล์
static List<string> DirSearch(string sDir)
{
List<string> files = new List<string>();
try
{
foreach (string d in Directory.GetDirectories(sDir))
{
foreach (string f in Directory.GetFiles(d))
{
files.Add(f);
}
DirSearch(d);
}
}
catch (System.Exception excpt)
{
Console.WriteLine(excpt.Message);
}
return files;
}
แนวคิดคือถ้าฉันต้องการรับไฟล์ทั้งหมดภายใต้สีน้ำเงิน ฉันจะคลิกที่สีน้ำเงิน แต่ถ้าฉันต้องการรับเฉพาะไฟล์ใน 1 เมื่อฉันคลิกที่ 1 มันไม่ทำงานเนื่องจาก 1 ไม่ใช่เส้นทางที่สมบูรณ์
AfterSelect
event แทนMouseClick
- person Reza Aghaei   schedule 03.02.2017