首页 > 解决方案 > 仅当填充文本框和日期时间选择器时才能启用按钮

问题描述

[根据回复编辑的版本]

我希望仅在填充文本框和日期时间选择器时才启用 button1。我可以为文本做,但不能为 datetimepicker 做。这是我的完整代码。仅供参考:我的 datetimepicker 最初被格式化为空,以允许用户自己选择日期。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Inspection
  {
    public partial class Vdetails : Form
     {
    public Vdetails()

    {
        InitializeComponent();
        Vnew.Enabled = false; 
    }

    //Allow user input date
    private void DTafes_ValueChanged(object sender, EventArgs e)
    {
        DTafes.CustomFormat = @"";
    }
    private void DTfa_ValueChanged_1(object sender, EventArgs e)
    {
        DTfa.CustomFormat = @"";
    }
    private void DTfe_ValueChanged(object sender, EventArgs e)
    {
        DTfe.CustomFormat = @"";
    }

    //Condition to allow button to go next
    private void ActivateButton()
    {
        Button1.Enabled = (Vehicle.Text != "" && Distance.Text != "");
    }

    private void Vehicle_TextChanged(object sender, EventArgs e)
    {
        ActivateButton();
    }

    private void Distance_TextChanged(object sender, EventArgs e)
    {
        ActivateButton();
    }
}

什么以及如何添加代码以允许填充 datetimepicker。希望有人可以帮助我。

标签: c#datetimepickerwindows-forms-designer

解决方案


dateTimePicker 没有 textchanged-event。dateTimePicker 中永远不会有空字符串。(也许您可以通过代码设置它,但不能通过用户输入)您可以使用 dateTimePicker 的 valueChanged-event 在用户更改日期时执行某些操作。

由于文本永远不会为空,因此您不必在 ActiveButton 功能中检查它。

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
    private void ActiveateButton()
    {
        this.button1.Enabled = textBox1.Text != string.Empty;
    }


    private void textBox1_TextChanged(object sender, EventArgs e)
    {
        ActiveateButton();
    }
    private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
    {
        ActiveateButton();
    }
}

推荐阅读