[VB.NET][2008] 2 表格显示和关闭

[VB.NET][2008] 2 forms show and close

提问人:ROY 提问时间:8/24/2023 最后编辑:ROY 更新时间:8/25/2023 访问量:38

问:

我创建了 2 个表单并以不同的方法“显示”和“ShowDialog”显示它们。 我尝试关闭 Form2 Load 事件中的 Form1,Form2 的 DialogResult 更改为“Cancel”?这是一个错误吗?

F1 用于徽标显示,F2 用于登录窗口。 F1 显示并停留 3 秒。F2 显示并等待用户登录。

Private WithEvents f1 As Form
    Private WithEvents f2 As Form
    Private WithEvents bg As System.ComponentModel.BackgroundWorker

    Public Sub Run()
        Try
            bg = New System.ComponentModel.BackgroundWorker
            f1 = New Form
            f1.Name = "Form1"
            f1.Show()
            Console.WriteLine("Show Form1 and stay 3 seconds")
            bg.RunWorkerAsync()

            f2 = New Form
            f2.Name = "Form2"
            Console.WriteLine("Show Form2 (ShowDialog)")
            Dim rlt = f2.ShowDialog()
            If rlt = DialogResult.Cancel Then
                Console.ReadKey()
            End If
        Catch ex As Exception

        End Try
    End Sub

    Private Sub bg_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles bg.DoWork
        Dim stw = Stopwatch.StartNew
        Do
            Application.DoEvents()
        Loop Until stw.ElapsedMilliseconds > 3000
    End Sub

    Private Sub bg_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles bg.RunWorkerCompleted
        Console.WriteLine("Form2's DialogResult = {0}", f2.DialogResult)
        f1.Close()
        Console.WriteLine("After Form1 close, Form2's DialogResult changed to ({0}). WHY?", f2.DialogResult)
    End Sub

#VB.NET

vb.net visual-studio-2008

评论

1赞 jmcilhinney 8/24/2023
我可以确认所述行为,但我不确定为什么会发生这种情况。我可以做出有根据的猜测,但仅此而已。我不确定这是专门设计的,还是只是某些其他行为的结果。我会说你正在做的事情——从模态对话中关闭无模式对话——是奇怪和毫无意义的。也许你可以解释一下你真正想要实现的目标。当模式对话打开时,用户无法访问无模式对话,因此在打开之前或关闭之后关闭似乎是明智的选择。f1f2
0赞 SSS 8/25/2023
您不需要坚持使用 VB2008。您可以免费下载最新的 VS 社区版:visualstudio.microsoft.com/vs/compare
0赞 ROY 8/25/2023
F1 用于徽标显示,F2 用于登录窗口。

答: 暂无答案