从另一个窗口接收结果

时间:2014-04-03 09:39:02

标签: wpf vb.net com modal-dialog itunes

我想在调用 iTunes.OnQuittingEvent 事件时显示一个对话框

(我有一个使用COM连接到iTunes的WPF应用程序)

我要创建的此对话框询问用户是否要关闭iTunes,他们也必须关闭应用程序因此,如果他们点击该按钮 iTunes,对话框和应用程序将关闭

但是。 如果他们点击取消按钮,就会关闭对话框并取消退出iTunes。

谁能帮助我吗?抱歉,我还没有任何代码或截图,我还没有弄清楚包括设计在内的一切。

这就是我现在得到的全部内容:

在主窗口:

Private Sub iTunes_OnQuittingEvent() Handles iTunes.OnQuittingEvent
  *'i still don't know how to show a dialog sorry*
End Sub

1 个答案:

答案 0 :(得分:0)

对于您的对话框,您可以使用类似

的内容
Dim result As MessageBoxResult = MessageBox.Show("Message Test", "Caption", MessageBoxButtons.OKCancel)

        Select Case result
            Case MessageBoxResult.OK
            Case MessageBoxResult.Cancel
        End Select

这将为您提供一个带有ok / cancel选项的模态消息框。

然后,您可以决定使用案例陈述做什么。

要制作自定义对话框,您可以使用类似的内容。

这是一个简单的例子。

XAML

<Window x:Class="MessageWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="DialogWindow" Height="150" MaxHeight="450" Width="400" MaxWidth="600" SizeToContent="WidthAndHeight" WindowStartupLocation="CenterScreen">
            <StackPanel Orientation="Horizontal">
                <Button Name="btnYes" Content="Yes" Click="btnYes_Click"></Button>
                <Button Name="btnNo" Content="No" Click="btnNo_Click"></Button>
                <Button Name="btnCancel" Content="Cancel" Click="btnCancel_Click"></Button>

            </StackPanel></Window>

VB

Public Class MessageWindow

    Private _messageResponse As MessageBoxResult

    Public Property MessageResponse As MessageBoxResult
        Get
            Return _messageResponse
        End Get
        Set(value As MessageBoxResult)
            _messageResponse = value
        End Set
    End Property

    Private Sub btnYes_Click(sender As System.Object, e As System.Windows.RoutedEventArgs)
        DialogResult = True
        _messageResponse = MessageBoxResult.Yes
        Me.Close()
    End Sub

    Private Sub btnNo_Click(sender As System.Object, e As System.Windows.RoutedEventArgs)
        DialogResult = False
        _messageResponse = MessageBoxResult.No
        Me.Close()
    End Sub

    Private Sub btnCancel_Click(sender As System.Object, e As System.Windows.RoutedEventArgs)
        DialogResult = False
        _messageResponse = MessageBoxResult.Cancel
        Me.Close()
    End Sub
End Class

然后你可以像这样使用它

Dim messageWindow As New MessageWindow()

        messageWindow.ShowDialog()

        Dim result As MessageBoxResult = messageWindow.MessageResponse
        'handle response

请注意,如果您只有两个可能的响应,那么您可以使用Window的dialogresult属性,该属性是从window的showdialog函数返回的。例如。对于OK,您可以使用dialogresult = true,对于cancel,您可以使用dialogresult = false。