【问题标题】:Winforms: Determine if tree view background clickedWinforms:确定是否单击了树视图背景
【发布时间】:2017-08-18 08:44:32
【问题描述】:

我正在制作一个winforms 应用程序,用户可以通过右键单击节点或背景将节点添加到树视图中。如果用户点击一个节点,新节点应该成为该节点的子节点,否则将被添加到树视图的根目录。

我的问题是没有检查背景是否被点击的功能。以下是我到目前为止所拥有的。不幸的是,如果现在单击一个节点,那么子节点将被添加到根节点和父节点。

private void treeView_MouseClick(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Right) addChild(null);
}

private void treeView_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
    if (e.Button == MouseButtons.Right) addChild(e.Node);
}

private void addChild(TreeNode parent)
{
    TreeNode node = new TreeNode("new node");

    // If didn't click on a node, add to root, otherwise add to parent
    if (parent == null) treeView.Nodes.Add(node);
    else parent.Nodes.Add(node)

    node.Parent.Expand();
}

【问题讨论】:

    标签: c# winforms treeview


    【解决方案1】:

    将您的代码从MouseClick 移动到MouseUp(当用户释放鼠标按钮时)。然后通过鼠标坐标检查该位置是否有节点。 看看这段代码:

    private void treeView1_MouseUp(object sender, MouseEventArgs e)
    {
        var clickedNode = treeView1.GetNodeAt(e.X, e.Y);
        if (clickedNode == null)
        {
            //clicked on background
            addChild(null);
        }
        else
        {
            //clicked on node
            addChild(clickedNode);
        }
    }
    

    【讨论】:

    • 像魅力一样工作!
    猜你喜欢
    • 2011-03-18
    • 1970-01-01
    • 2012-01-24
    • 2020-07-09
    • 2015-06-10
    • 1970-01-01
    • 2014-07-07
    • 1970-01-01
    • 2014-08-12
    相关资源
    最近更新 更多