Создать результат диалога из пользовательского класса окна сообщения - PullRequest
2 голосов
/ 03 августа 2011

Я занимаюсь разработкой пользовательского класса сообщений, например:

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 ]

1 голос
/ 03 августа 2011

Начните с простого.Вам придется вручную подключать события, используя ключевые слова 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
0 голосов
/ 26 апреля 2014
Me.DialogResult = Windows.Forms.DialogResult.Abort
Me.Close()

и он вернет результат Abort

...