2016-01-28 69 views
-3

我有一个树形视图与多个节点(例如a,b,c)。如果我点击“b”,我希望单词“你好”出现在文本框中。Treeview C#点击一个节点上出现的文本

我有这样的方法:

private void treeList_SelectedNodeChanged(object sender, System.EventArgs e) 
{ 
    this.layoutControlItem1.Text="hello"; 
} 

问候文本出现,尽管我不点击的节点上。我做对了吗?

+0

把一个断点,看看当它被调用 –

+0

这可以通过调试简单地加以解决。 –

回答

1

最好的活动是使用NodeMouseClick

private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) 
{ 
    this.layoutControlItem1.Text = e.Node.Tag.ToString(); 
} 

得到不同的按摩每个节点的最简单方法是将它们存储在节点的标签:

someNode.Tag = "Some Message"; 

注意,SelectionChanged会往往比你希望它火到,包括每时间选择被清除..

如果您需要包括键盘选择,你应该包括在你的代码treeView1.SelectedNode != null检查..

+0

用这个,你不能用键盘改变它。 –

+1

这是正确的,但不是在问题。 – TaW

+0

你们只是人们不会以失败告终,他们不想 ,你用一个包含的支票就可以了,但是你也必须处理SelectedNodeChanged事件 –

0

您第一次加载您的表单时,SelectedNodeChanged事件将因您分配Instanciate()中的值或您自己的代码而被触发。

我建议你使用全局变量,如果形式是由Load事件加载到存储:

private bool isLoad = false; 
public Form1() 
{ 
    InitializeComponent(); 
} 

private void Form1_Load(object sender, EventArgs e) 
{ 
    isLoad = true; 
} 

private void treeList_SelectedNodeChanged(object sender, System.EventArgs e) 
{ 
    if(isLoad) 
    { 
     this.layoutControlItem1.Text="hello"; 
    } 
} 
相关问题