1

テキストボックスを含む単純なフォームがあり、このコントロールを閉じるかスキップする前に、ユーザーにテキストボックスにデータを入力させたいのですが、検証イベントを処理するときは、キャンセルボタンを押すことによってのみフォームを閉じることができます。 CauseValidationプロパティをtrueに設定します。私の質問は、テキストボックスに何も書き込まれていない場合でもフォームを閉じるためにコントロールボックスのXボタンを有効にするにはどうすればよいですか?form_closeingハンドラーを追加することにより、このボタンは2回目にクリックしたときに機能します、ただし、Xボタンを1回押すだけでフォームを閉じることはできますか?

これが私のform.csファイルです:

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

    namespace Validation
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();

            }

            private void textBox1_Validating(object sender, CancelEventArgs e)
            {

                if(textBox1.Text.Trim().Equals(string.Empty))
                {
                e.Cancel=true;

                errorProvider1.SetError(textBox1,"Error");

                }
                else
                    errorProvider1.SetError(textBox1,"");
            }
       private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            textBox1.CausesValidation = false;
        }
        }
    }

どうもありがとう

4

2 に答える 2

1

はい、これを試してください。

  private void Form2_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (textBox1.CausesValidation)
            {
                textBox1.CausesValidation = false;
                Close();
            }
        }
于 2012-12-16T07:35:43.457 に答える
0

前の答えを除いて、この方法も機能します。

private void Input_FormClosing(object sender, FormClosingEventArgs e)
        {


          e.Cancel = false;

        }
于 2012-12-16T07:46:59.240 に答える