【发布时间】:2016-11-17 14:10:53
【问题描述】:
我正在使用 c# 编写一个包含 TreeView 的表单应用程序。我想要做的是将面板附加到每个节点,这样每当用户单击节点时,面板就会根据所选节点进行更新。
我面临的问题是,当我选择一个节点时,应用程序什么也不做,但当我选择另一个节点时,应用程序会显示与先前选择的节点相关的内容。意味着 App 总是获取与最后选择的节点相关的内容,而不是当前节点。例如,如果我选择“文本”节点,标签将不显示任何内容,之后如果我选择其他节点,如“外观”,标签将显示“文本”,这是最后选择的节点。
以下是包含 TreeView 的表单的图像。
出于测试目的,我只是将所选节点的值存储在标签的文本中
这是代码。
public partial class TextEditor_Preferences : Form
{
public TextEditor_Preferences()
{
InitializeComponent();
}
List<Panel> myPanels = new List<Panel>(); //Ignore this line of code !
private void SideBar_MouseClick(object sender, MouseEventArgs e)
{
label1.Text = SideBar.SelectedNode.ToString();
}
}
有人可以建议我一种方法吗?
如果我遗漏了什么或问题无效,请明确告诉我。谢谢
【问题讨论】:
-
MouseClick 事件可能发生在树中的选择更改之前,因此在您单击时它仍然具有标记为“已选择”的旧值。尝试注册另一个事件,可能是 SelectionChanged 或类似的东西。