是否阻止Form1上的对话框阻止与Form2的交互?

时间:2018-12-19 15:41:21

标签: .net vb.net winforms showdialog

我正在使用具有两种形式的WinForm应用程序。第一种形式是具有所有逻辑的主要形式。第二种形式包含浏览器控件,并基于从Form1传递的数据访问内部网页。然后可以与网页进行交互。当在Form1上弹出MessageBox并在Form2上阻止交互时,就会出现问题。

是否有一种方法可以在应答MessageBox之前启用Form2的交互?

[HttpPost]
public JsonResult Create(CreateRMAVM vm)
{
try
{
if (vm.CustomerName != null && vm.vares != null)
{
vm.vares.Select(c => { c.CustomerName = vm.CustomerName; return c; 
}).ToList();
}

OpenBrowser子:

OpenBrowser(docIDs, txtID.Text)
 Me.Activate()
 resultYESNO = MessageBox.Show(Me, questionText, "Question", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
         If resultYESNO = DialogResult.Yes Then
           columnValue = "Y"
          ElseIf resultYESNO = DialogResult.No Then
           columnValue = "N"
           End If

1 个答案:

答案 0 :(得分:1)

以下示例显示了如何创建不同的UI线程以及如何在不同的线程上显示不同的表单。然后,模态对话框形式在创建它们的线程中是模态的:

Imports System.Threading
Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        For i = 1 To 2
            Dim index = i
            Dim t = New Thread(
                Sub()
                    Dim f = New Form With {.Text = $"Form {index}"}
                    Dim b = New Button With {.Text = "Click Me."}
                    AddHandler b.Click,
                        Sub()
                            Using d As New Form()
                                d.StartPosition = FormStartPosition.CenterParent
                                d.Size = New Drawing.Size(100, 100)
                                d.ShowDialog()
                            End Using
                        End Sub
                    f.Controls.Add(b)
                    Application.Run(f)
                End Sub)
            t.SetApartmentState(ApartmentState.STA)
            t.IsBackground=True
            t.Start()
        Next
    End Sub
End Class