对窗体的textbox使用Validating事件后,窗体右上方的关闭(红色的叉)无法使用了。
现在只能通过窗体上已经做好的关闭按钮来关闭。
想向前辈们求一段代码,可以通过窗体右上方的关闭来关闭窗体。

解决方案 »

  1.   


        Private Sub GM0300_G00_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) _
                                      Handles _
                                      処理種別.Validating, 運輸会社コードコンポボックス.Validating, 正式名称.Validating, 略名称.Validating, _
                                      郵便番号1.Validating, 郵便番号2.Validating                Dim W_RTN As String        'エラーメッセージエリアクリア
            Me.エラーメッセージ.Text = ""        '終了ボタンが押された(Focus)時はチェック処理を行わない
            If Btn_終了.Focused = True Then
                Exit Sub
            End If        'データチェック処理
            Select Case W_GMN_ACT
                Case "処理種別"
                    '文字色、背景色クリア
                    Me.処理種別.BackColor = Color.White
                    Me.処理種別.ForeColor = Color.Black
                    If Me.処理種別.Text = "1" Then
                    Else
                        If Me.処理種別.Text = "2" Then
                        Else
                            If Me.処理種別.Text = "3" Then
                            Else
                                If Me.処理種別.Text = "4" Then
                                Else
                                    W_RTN = "処理区分に誤りがあります"
                                    エラーメッセージ.ForeColor = Color.Red
                                    処理種別.BackColor = Color.Red
                                    エラーメッセージ.Text = W_RTN
                                    e.Cancel = True
                                    Me.処理種別.Select(0, Me.処理種別.Text.Length)                            End If
                            End If
                        End If
                    End If
                Case "運輸会社コードコンポボックス"                ''文字色、背景色クリア
                    Me.運輸会社コードコンポボックス.BackColor = Color.White
                    Me.運輸会社コードコンポボックス.ForeColor = Color.Black
                    W_RTN = "OK"
                    If Me.運輸会社コードコンポボックス.Text = "" Then
                        W_RTN = "運輸会社コードが未入力です"
                    Else                    'SQL SERVER(データ読込)
                        'SQL SERVER(DBOPEN)
                        SQL_エラー = SUB_DB_OPEN("SUB_項目チェック")
                        'SQL SERVER(コマンドセット)
                        SQL_エラー = SUB_DB_COMMAND("SUB_項目チェック", "SYAC", "キー指定全項目読込み")
                        'パラメータに値をセットする
                        SQL_コマンド.Parameters("@運輸会社コード").Value = 運輸会社コードコンポボックス.Text
                        'クエリーを実行する(該当するキーのレコードを読み込む)
                        Try                        SQL_SYACDB_READER = SQL_コマンド.ExecuteReader()
                        Catch SQL_例外 As SqlClient.SqlException
                            MessageBox.Show(SQL_例外.Message, "DB ExecuteReaderエラー" & " 発生場所:" & "GM0300_G00_Validating")
                        End Try
                        Try
                            SQL_SYACDB_RETURN = SQL_SYACDB_READER.Read
                        Catch SQL_例外 As SqlClient.SqlException
                            MessageBox.Show(SQL_例外.Message, "DB READエラー" & " 発生場所:" & "GM0300_G00_Validating")
                        End Try                    'データ存在時
                        If SQL_SYACDB_READER.HasRows = False Then
                            If Me.処理種別.Text.StartsWith("1") Then
                                W_RTN = Fun_全半角文字チェック(Me.運輸会社コードコンポボックス.Text, "半", W_GMN_ACT)
                                If W_RTN = "OK" Then
                                Else
                                    W_RTN = "運輸会社コードが全角で入力されている"
                                End If
                            Else
                                W_RTN = "該当する運輸会社コードが未登録です"
                            End If
                        Else
                            If Me.処理種別.Text.StartsWith("1") Then
                                W_RTN = "既に該当する運輸会社コードが登録済みです"
                            Else
                                SUB_画面項目セット()
                            End If
                        End If                    'データリーダーをCLOSEする
                        SQL_SYACDB_READER.Close()
                        'DB(CLOSE)
                        SQL_接続.Close()
                    End If
                    '処理区分が押された(Focus)時はチェック処理を行わない
                    If Me.処理種別.Focused = True Then
                        Exit Sub
                    End If                If W_RTN = "OK" Then
                        '画面をデータ入力状態に設定
                        W_GMN_FLG = SUB_画面設定("BODY")
                    Else
                        'エラー項目及びメッセージ属性変更
                        エラーメッセージ.ForeColor = Color.Red
                        運輸会社コードコンポボックス.BackColor = Color.Red
                        エラーメッセージ.Text = W_RTN
                        e.Cancel = True
                        Me.運輸会社コードコンポボックス.Select(0, Me.運輸会社コードコンポボックス.Text.Length)
                    End If
                Case "正式名称"
                    '文字色、背景色クリア
                    Me.正式名称.BackColor = Color.White
                    Me.正式名称.ForeColor = Color.Black
                    '必須チェック
                    If Me.正式名称.Text = "" Then
                        W_RTN = "正式名称が未入力です"
                        エラーメッセージ.ForeColor = Color.Red
                        正式名称.BackColor = Color.Red
                        エラーメッセージ.Text = W_RTN
                        e.Cancel = True
                        Me.正式名称.Select(0, Me.正式名称.Text.Length)
                    End If
                Case "略名称"
                    '文字色、背景色クリア
                    Me.略名称.BackColor = Color.White
                    Me.略名称.ForeColor = Color.Black
                    '必須チェック
                    If Me.略名称.Text = "" Then
                        W_RTN = "略名称が未入力です"
                        エラーメッセージ.ForeColor = Color.Red                    略名称.BackColor = Color.Red
                        エラーメッセージ.Text = W_RTN
                        e.Cancel = True
                        Me.略名称.Select(0, Me.略名称.Text.Length)
                    End If            Case "郵便番号1"
                    'Case "会社郵便番号"
                    '    '文字色、背景色クリア
                    Me.郵便番号1.BackColor = Color.White
                    Me.郵便番号1.ForeColor = Color.Black
                    '数値チェック
                    W_RTN = Fun_数値チェック(Me.郵便番号1.Text, 3, 0, "###", W_GMN_ACT)
                    If Mid(W_RTN, 1, 2) = "OK" Then                Else
                        W_RTN = Fun_数値チェック(Me.郵便番号1.Text, 3, 0, "###", W_GMN_ACT)
                        エラーメッセージ.ForeColor = Color.Red
                        Me.郵便番号1.BackColor = Color.Red
                        エラーメッセージ.Text = W_RTN
                        e.Cancel = True
                        Me.郵便番号1.Select(0, Me.郵便番号1.Text.Length)
                    End If            Case "郵便番号2"
                    'Case "会社郵便番号"
                    '    '文字色、背景色クリア
                    Me.郵便番号2.BackColor = Color.White
                    Me.郵便番号2.ForeColor = Color.Black
                    '数値チェック
                    W_RTN = Fun_数値チェック(Me.郵便番号2.Text, 4, 0, "###", W_GMN_ACT)
                    If Mid(W_RTN, 1, 2) = "OK" Then
                    Else
                        W_RTN = Fun_数値チェック(Me.郵便番号1.Text, 3, 0, "###", W_GMN_ACT)
                        W_RTN = Mid(W_RTN, 1, 2)                    エラーメッセージ.ForeColor = Color.Red
                        Me.郵便番号2.BackColor = Color.Red
                        エラーメッセージ.Text = W_RTN
                        e.Cancel = True
                        Me.郵便番号2.Select(0, Me.郵便番号1.Text.Length)
                    End If        End Select
      

  2.   

    以上是关于Validating事件中的全部代码?在网上查原因是使用Validating事件后,右上边的关闭将不能使用。需要写一段窗体的closing事件?但是在from事件里没找到closing事件啊?
      

  3.   

    呵呵,问题解决了!在代码最开始位置加上一句
    If ActiveControl.CausesValidation = True Then
                Exit Sub
            End If
    就可以了!谢谢前辈!