我正在使用c#中的表单应用程序,其中包含TreeView。我想要做的是将面板连接到每个节点,以便每当用户点击某个节点时,面板将根据所选节点进行更新。
我面临的问题是,当我选择一个节点时,应用程序什么都不做,但是当我选择另一个节点时,应用程序会显示与先前选择的节点相关的内容。表示App始终获取与上次选择的节点相关的内容而不是当前节点。例如,如果我选择" Text"节点,标签将不显示任何内容,之后如果我选择其他节点,如"外观"标签将显示" Text"这是最后选择的节点。
以下是我的Form包含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();
}
}
有人可以建议我使用方法吗? 如果我遗漏了某些内容或问题无效,请明确告诉我。感谢
答案 0 :(得分:3)
TreeView控件具有AfterSelect事件,您应该在该处理程序中编写代码。
public YourForm()
{
InitializeComponent();
treeView.AfterSelect += TreeViewAfterSelect;
}
private void TreeViewAfterSelect(object sender, TreeViewEventArgs e)
{
string nodeText = treeView.SelectedNode.Text;
// Update the panel here accordingly
}
答案 1 :(得分:1)
也许尝试使用AfterSelect事件而不是MouseClick。 e.g。
private void Sidebar_AfterSelect(object sender, TreeViewEventArgs e)
{
label1.Text = e.Node.Text;
}