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

约翰

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

有没有办法在回答 MessageBox 之前启用 Form2 的交互?

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

OpenBrowser 子程序:

Private Sub OpenBrowser(ByVal docIDs As List(Of String), ByVal ID As String)
    If Not Application.OpenForms().OfType(Of Browser).Any Then
        Dim browser = New Browser()
    End If
    Dim encodeIDs As String
    encodeIDs = String.Join(",", docIDs.ToArray())
    Dim barray As Byte() = System.Text.Encoding.UTF8.GetBytes(encodeIDs)
    Dim encodedIDs = System.Convert.ToBase64String(barray)
    Dim url = ConfigurationManager.AppSettings("MyBrowserPath")
    Browser.WebBrowser1.Url = New Uri(url & encodedIDs)
    Dim area = Screen.PrimaryScreen.WorkingArea
    Dim width = CInt(area.Width / 2)
    Dim height = CInt(area.Height)
    Browser.Width = width
    Browser.Height = 800
    Browser.SetDesktopLocation(width, 0)
    Browser.Show()
    Browser.BringToFront()
    Browser.Activate()
End Sub
礼萨·阿海伊

以下示例展示了如何创建不同的 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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用 php/javascript 或 jquery 提交 form2 时阻止其他 form1 提交

我想从Form2(文本框,图片框)控制Form1

将数据从 form2 方法传递到 form1 文本框

c#从form2激活form1上的面板

只需单击 form1 上的一个按钮即可打开 form2

在 Form2 上调用函数时从 Form1 上的文本框中获取文本

通过在form2中的命令来锁定和解锁form1上的文本框

关闭Form2后刷新Form1

禁用form2移出form1

从 Form1 到 Form2 的显示变量

如何从form1到form2取值并返回?

在我的代码中,form1上的用户名应显示在buttonclick上的form2文本框中

使用Form1的公共变量从Form1调用Form2的函数

在Visual Basic中将数据从Form1中的文本框传递到打开的Form2中的文本框

在VB.NET中单击按钮时,如何将数据从Form2发送到Form1到Form1文本框中?

从第二个打开的form2发送拳头form1文本框

为什么在消息框错误消息中不按OK会使您返回到form1而不是form2?

将 Form1 中的“Private Sub Procedure1”从 Form2 更改为“Public -”(Form1)

通过按钮单击将值从 form1 传递到 form2 到 form2

提交form2之前从form1到form2获取值的任何可能方法

C#中form1和form2之间的数据传递

当form1中的值发生变化时如何使form2更新

从form1访问form2中的不同元素,反之亦然

从form2插入后,form1中的datagridview自动刷新

通过将form2提交到django视图来获取form1值

如何从Form2访问Form1的非静态方法

C#-通过交叉关闭Form2后无法看到Form1

Form2关闭时Form1执行方法不起作用

关闭form2时关闭form1(通过红色十字按钮)