C# 更改TreeNode背景色,但AfterSelect事件未按预期工作
在我的表格中,有一个列出个人信息的树状视图和一个列出个人信息的列表框。选择人员将刷新列表框,以显示适用的权限列表。特权可以编辑。编辑后,当用户在树中选择另一个人时,会显示一条消息“保存更改”,其中有3个按钮:是;不取消。calcel按钮用于将treeView返回到上一个状态,即上一个选中的人和用户单击的人-未选中的人 为了实现这一点,我尝试在treeView上使用两个事件处理程序:BeforeSelect和AfterSelect。代码片段如下所示。MyMessageBox是一个根据单击的按钮返回枚举值的类C# 更改TreeNode背景色,但AfterSelect事件未按预期工作,c#,C#,在我的表格中,有一个列出个人信息的树状视图和一个列出个人信息的列表框。选择人员将刷新列表框,以显示适用的权限列表。特权可以编辑。编辑后,当用户在树中选择另一个人时,会显示一条消息“保存更改”,其中有3个按钮:是;不取消。calcel按钮用于将treeView返回到上一个状态,即上一个选中的人和用户单击的人-未选中的人 为了实现这一点,我尝试在treeView上使用两个事件处理程序:BeforeSelect和AfterSelect。代码片段如下所示。MyMessageBox是一个根据单击的按钮返回
private void TreeView_BeforeSelect(object sender, TreeViewCancelEventArgs e)
{
if (saveButton.Enabled)
{
MyMessageBoxResults result = MyMessageBox.display("Save changes?", MessageBoxType.YesNoCancel);
if (result == MyMessageBoxResults.Yes)
{
saveChanges();
}
else if (result == MyMessageBoxResults.Cancel)
{
TreeNode temp1 = TreeView.SelectedNode; //for debug purposes
temp1.BackColor = Color.DodgerBlue;
temp1.ForeColor = Color.White;
}
else //result == MyMessageBoxResults.No
{
}
}
}
private void TreeView_AfterSelect(object sender, TreeViewEventArgs e)
{
TreeNode temp2 = TreeView.SelectedNode; //for debug purposes
temp2.BackColor = TreeView.BackColor;
}
结果是有两个节点高亮显示(即,用户显示为“已选定”)。当调试temp1和temp2节点按预期显示值时,TreeNode temp2的颜色显示为已更改,因此我希望它在TreeView中显示相同的值,但它是蓝色上的白色字母。(还有一些代码实际上选择了适当的节点,因此程序本身可以按预期工作,这只是视觉效果的问题)。
有什么想法吗?我不清楚更改节点的前/后颜色如何有用。不要这样做,您需要在BeforeSelect事件处理程序中设置e.Cancel=true以防止选择。谢谢,我从未想过这一点,这正是我所需要的。就我而言,问题解决了。