文本框验证不允许表单关闭

时间:2018-01-27 22:40:13

标签: c# winforms

我有一个窗口表单,用于验证文本框中是否有文本,但是在浏览表单的其余部分时效果很好,但是,如果用户只想单击右上角的关闭(x)按钮而不是实际运行应用程序,我得到文本的异常处理消息不在文本框中而不是退出应用程序。我环顾四周,看了一下关于检测关闭按钮的其他问题,这让我尝试了下面的内容。我仍然收到事件消息而不是退出。单击关闭按钮时如何绕过此消息?

现在,我可以关闭应用程序的唯一方法是,如果我在文本框中放入一些东西,然后单击关闭(x)按钮。

private void testTextBox_Validating(object sender, CancelEventArgs e)
    {


        //check to see if there is anything entered into the main text box before choosing an option
        if (string.IsNullOrEmpty(testTextBox.Text))
        {
            if (sender.Equals(CloseReason.UserClosing))
            {
                Application.Exit();
            }
            else
            {
                MessageBox.Show("You have not entered anything to work with. \n Please enter something.");
                e.Cancel = true;
            }

        }
    }

1 个答案:

答案 0 :(得分:0)

我有两种形式:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        var form2 = new Form2();
        form2.Show();
    }
}

另一个:

  public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        protected override void OnClosing(CancelEventArgs e)
        {
            if (!string.IsNullOrWhiteSpace(textBox1.Text))
            {
              Application.Exit();
            }
            else
            {
                e.Cancel = true;
            }
            base.OnClosing(e);
        }
    }

它对我有用。如果我使用textblock中的text关闭form2,它将退出应用程序。