从自定义消息框类生成对话框结果

时间:2011-08-03 02:59:34

标签: vb.net class msgbox

我正在开发一个自定义消息框类,如下所示 -

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

2 个答案:

答案 0 :(得分:1)

从简单的开始。您必须使用此{/ p>的AddHandler and RemoveHandler关键字手动连接事件

AddHandler btnNo.Click, AddressOf btnNo_Click

btnNo是按钮对象。 “.Click”是您要捕获的事件。 AddressOf获取一个指向函数的指针(基本上,它告诉编译器函数的位置。将它想象成一种不同类型的“句柄”。)

通过这样做,你必须在完成后重新启动处理程序。

RemoveHandler btnNo.Click, AddressOf btnNo_Click

要设置对话框结果,必须通过ShowDialog调用表单。 You Simple设置表单的DialogResults属性。我会在form.closing事件中这样做。

me.DialogResult = Windows.Forms.DialogResult.OK

答案 1 :(得分:0)

Me.DialogResult = Windows.Forms.DialogResult.Abort
Me.Close()

它将返回结果Abort