2017-05-31 49 views
1

我有一个显示SQL数据库清单的treenode。我有一种方法来获取选定的工作流程。Winforms C#在Treenode上禁用/启用按钮点击

我想启用运行按钮,如果复选框被选中,并禁用按钮,如果没有检查和加载。

我不知道把这个if语句放在哪里。我试图把它放在点击动作的运行按钮下,但它不能正常工作。

任何帮助表示赞赏。要做到这一点

List<WorkflowViewModel> workflowViewList = new List<WorkflowViewModel(); 

var workflowList = GetSelectedWrokflows(); 
if (workflowList.Count == 0) 
{ 

    button.enabled = false; 
} 
else 
{ 
    button.enabled = true; 
} 
+2

我不知道,但可能将如果在第20行的语句将做的工作。在没有看到你的代码的情况下,我无法准确地说出 –

+1

@SergeyBerezovskiy它应该在班级以外的第5行。和命名空间之后。 –

+0

您应该编写'AfterCheck'事件,执行所有测试,然后设置按钮状态。 – TaW

回答

1

的一种方式是创建将做确定所选择的工作流程项以及启用或禁用按钮的工作的方法。通过将代码放在一个单一的方法中,它可以让你从多个地方调用它,如果你需要改变行为,你只有一个地方做修改。

然后,你可以调用从事件这个方法,从检查列表框的ItemCheck事件:

public partial class Form1 : Form 
{ 
    List<WorkflowViewModel> workflowViewList = new List<WorkflowViewModel>(); 

    private void SetRunButtonState() 
    { 
     workflowViewList = GetSelectedWorkflows(); 
     button.Enabled = workflowViewList.Count > 0; 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     SetRunButtonState(); 
    } 

    private void treeView1_AfterCheck(object sender, TreeViewEventArgs e) 
    { 
     SetRunButtonState(); 
    } 

    // Rest of class code omitted... 
} 
+0

嗨,谢谢你的帮助。我添加了这段代码,但现在即使在复选框被选中后,按钮仍然保持禁用。你知道为什么吗? – Julie

+0

checkedListBox如何与Treeview操作相关? – TaW

+1

糟糕,我在问题中读取了“显示检查清单”并使用了错误的控件。我已将代码切换为使用“TreeView”。这是你使用的控制吗? –