【问题标题】:Receive Result from another Window从另一个窗口接收结果
【发布时间】:2014-04-03 09:39:02
【问题描述】:

我想在 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

【问题讨论】:

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


    【解决方案1】:

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

    Dim result As MessageBoxResult = MessageBox.Show("Message Test", "Caption", MessageBoxButtons.OKCancel)
    
            Select Case result
                Case MessageBoxResult.OK
                Case MessageBoxResult.Cancel
            End Select
    

    这将为您提供一个带有确定/取消选项的模式消息框。

    然后您可以使用 case 语句来决定要做什么。

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

    这是一个简单的例子。

    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 函数返回的。例如。您可以使用 dialogresult = true 表示确定,使用 dialogresult = false 表示取消。

    【讨论】:

    • 但我想使用我制作的窗口作为对话框来进行个性化对话框
    • 在消息框中,您可以设置标题和消息内容。如果您需要更个性化的颜色、图形自定义布局等,请使用 Window 制作您自己的东西。如果您给它一个 MessageBoxResult 属性,您仍然可以使用消息框枚举在窗口关闭时返回用户选项。您可以通过调用 showdialog 而不是 show 来使窗口模式化。
    • 我认为这就是我正在寻找的。你能帮我创建代码吗?抱歉,我才刚刚开始学习这些东西。
    • 我已经扩展了原始答案,将基本窗口布局设置为对话框。您可以在 XAML 中根据自己的喜好自定义布局。
    • 非常感谢!!!!!!!最后一个,我如何在主窗口中调用它?我很抱歉:(我只是对对话和接收一无所知
    猜你喜欢
    • 2017-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多