【问题标题】:TreeView on Focus Leave - disable buttonTreeView on Focus Leave - 禁用按钮
【发布时间】:2016-11-01 13:17:40
【问题描述】:

我想拥有一个Button

  1. TreeView 中的一个节点被选中时获取Enabled
  2. TreeView 中的节点失去焦点时获取Disabled

我的Form 有两个TreeViews

  1. 包含书籍的 TreeView
  2. 包含贷款的 TreeView

当其中一个具有当前选择时,我希望另一个取消选择其项目。

我在Form 中也有一个ComboBox

TreeView with Loan(s) 选择了一个项目时,我想按下一个按钮来归还这笔贷款。但是一旦我尝试按下按钮,它就会被禁用并且我无法与之交互。

我试过这样解决:

private void treeViewLoans_AfterSelect(object sender, TreeViewEventArgs e)
{
    ReturnLoanButtonCheck();
}

private void treeViewLoans_Leave(object sender, EventArgs e)
{
    treeViewLoans.SelectedNode = null;
    ReturnLoanButtonCheck();
}

private void ReturnLoanButtonCheck()
{
    if (treeViewLoans.SelectedNode == null)
        buttonReturnLoan.Enabled = false;
    else if (treeViewLoans.SelectedNode != null)
        buttonReturnLoan.Enabled = true;
}

当我尝试按下按钮时,组合框获得焦点。

我在这里做错了什么?

【问题讨论】:

  • 它将禁用,因为一旦您单击按钮,treeviewnode 就会失去焦点并因此禁用。你不能在树视图中没有按钮吗?
  • 是的。如果我将按钮放在树视图中,按钮不会隐藏它后面的项目吗?
  • 如果您将按钮设为父按钮的子按钮,则不会。它应该像另一个其他节点一样扩展,这意味着一切都会向下移动
  • 我什至从未意识到你可以做到这一点。谢谢!这基本上为我打开了一个新世界!
  • WPF 可以成为我朋友的学习曲线 :) 我们都曾在某个时候到达过您所在的位置

标签: c# wpf treeview


【解决方案1】:

您可以将树视图中的按钮添加为子视图,如下所示:

<Window x:Class="TreeDemo.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:TreeDemo"
    mc:Ignorable="d"
    Title="MainWindow" Height="350" Width="525">
<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="172*"/>
        <ColumnDefinition Width="345*"/>
    </Grid.ColumnDefinitions>
    <TreeView>
        <TreeViewItem Header="Item 1">
            <Label Content="Invoce 1"/>
            <Button Content="Test 1" />
        </TreeViewItem>
        <TreeViewItem Header="Item 2">
            <Label Content="Invoce 2"/>
            <Button Content="Test2" />
        </TreeViewItem>
        <TreeViewItem Header="Item 3">
            <Label Content="Invoce 3"/>
            <Button Content="Test 3" />
        </TreeViewItem>
        <TreeViewItem Header="Item 3">
            <Label Content="Invoce 3"/>
            <Button Content="Test 3" />
        </TreeViewItem>
        <TreeViewItem Header="Item 3">
            <Label Content="Invoce 3"/>
            <Button Content="Test 3" />
        </TreeViewItem>
    </TreeView>
</Grid>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-02
    • 2011-12-12
    相关资源
    最近更新 更多