2

私は次のようなカスタムメッセージボックスクラスを開発しています-

Public Class MyCustomMsgBox


    Private MyForm As Form = New Form
    Private lblHeadline As Label = New Label
    Private lblMessageBody As Label = New Label
    Private btnNo As Button = New Button
    Private btnOk As Button = New Button
    Private btnYes As Button = New Button

    Public Sub New(ByVal Message As String)
        With MyForm
            .Width = 438
            .Height = 214
            .Controls.AddRange(New Control() {lblHeadline, lblMessageBody, btnNo, btnYes, btnOk})
        End With
    End Sub

    Public Shared Function ShowErrorMsg(ByVal ErrorMessage As String) As     Windows.Forms.DialogResult
        Dim obj As MyCustomMsgBox = New MyCustomMsgBox(ErrorMessage)
        obj.MyForm.ShowDialog()
    End Sub

    Public Shared function ShowSuccessMsg(ByVal SuccessMessage As String) As     Windows.Forms.DialogResult
       'some code
    End Sub

    Public Shared Function AskQuestions(ByVal Questions As String) As Windows.Forms.DialogResult
       'some code
    End Sub

    Public Shared Function ShowExceptions(ByVal ExMessage As String) As Windows.Forms.DialogResult
       'some code
    End Sub


    'Private Sub btnNo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNo.Click
    '  Windows.Forms.DialogResult.No()
    'End Sub

    End Class

これらの機能は、関連するグラフィック、色、タイトル、および見出しを使用して設計されています。

btnOkはDialogResult.Okを返し、btnNoはDialogResult.Noを返し、btnYesはDialogResult.Yesを返します。

これらの関数でダイアログ結果を返すにはどうすればよいですか?

どのボタンが押されているかをどうやって知ることができますか?

フォームレスクラスでボタンクリックイベントを処理する方法がわかりません。

アイデアを教えていただけませんか?

前もって感謝します。

SKPaul

4

2 に答える 2

1

簡単なものから始めましょう。AddHandlerおよびRemoveHandlerキーワードを使用して、イベントを手動で接続する必要があります。

AddHandler btnNo.Click, AddressOf btnNo_Click

btnNoはボタンオブジェクトです。「.Click」は、キャプチャするイベントです。AddressOfは、関数へのポインターを取得します(基本的に、関数がどこにあるかをコンパイラーに通知します。これを別のタイプの「ハンドル」と考えてください)。

これを行うことにより、完了時にハンドラーを削除する必要があります。

RemoveHandler btnNo.Click, AddressOf btnNo_Click

ダイアログ結果を設定するには、ShowDialogを介してフォームを呼び出す必要があります。フォームのDialogResultsプロパティを設定するだけです。form.closingイベントでそれを行います。

me.DialogResult = Windows.Forms.DialogResult.OK
于 2011-08-03T03:10:14.813 に答える
0
Me.DialogResult = Windows.Forms.DialogResult.Abort
Me.Close()

そしてそれは結果を中止します

于 2014-04-25T20:57:12.837 に答える