VB.net窗体刷新和关闭dialogform时禁用按钮

VB.net窗体刷新和关闭dialogform时禁用按钮,vb.net,winforms,Vb.net,Winforms,我正在开发vb.net应用程序。我有一个表单,点击发送邮件按钮,打开另一个表单,输入邮件详细信息并发送邮件,其中有“确定”和“取消”按钮 要打开表格2,请使用以下代码: Private Sub Button1_Click() Dim obj As New Form2 obj.ShowDialog(Me) End Sub 在form1中,只有当邮件已从form2发送时,才应启用“计算”按钮。若用户点击表单2上的“取消”按钮,则需要在表单1中禁用“计算”按钮。但事实并非如此。下面

我正在开发vb.net应用程序。我有一个表单,点击发送邮件按钮,打开另一个表单,输入邮件详细信息并发送邮件,其中有“确定”和“取消”按钮

要打开表格2,请使用以下代码:

 Private Sub Button1_Click()
    Dim obj As New Form2
    obj.ShowDialog(Me)
End Sub
在form1中,只有当邮件已从form2发送时,才应启用“计算”按钮。若用户点击表单2上的“取消”按钮,则需要在表单1中禁用“计算”按钮。但事实并非如此。下面是我的代码

 Private Sub Button2_Click()
        Dim obj As New Form1()
        obj.initinfo(System.Windows.Forms.DialogResult.Cancel)
        Me.Close()
    End Sub
在表格1中添加了以下代码

Friend Sub initinfo(result As DialogResult)
    If (result = DialogResult.Cancel) Then
        Me.Refresh()
        Me.Activate()
        Button2.Enabled = False
    End If
End Sub
上述代码无效。请提供一些建议

提前谢谢
Sangeetha

您正在Form2上创建Form1的新实例,此新实例不是指原始表单,而是创建一个新表单

以下是正确的步骤:

1.为Form1上的按钮创建属性

Public ReadOnly Property BtnSubmit As Button
    Get
        Return button1
    End Get
End Property
2.在Form2中为Form1创建属性

Public Property Form1Instance As Form1
    Get
    End Get
    Set
    End Set
End Property
3.现在在实例化form2时,将
Me
作为引用传递到Form1Instance属性中

Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs)
    Dim f2 As Form2 = New Form2
    f2.Form1Instance = Me
    f2.Show
End Sub
4.在表格2中,使用如下:

If (Not (Form1Instance) Is Nothing) Then
   Form1Instance.BtnSubmit.Enabled = false
End If
在您的情况下,它将是:

Form1Instance.initinfo(System.Windows.Forms.DialogResult.Cancel)

我希望你能理解。

如果按下表单2上的按钮2(我想是取消按钮),你想禁用表单1上的按钮2。

在属性窗口中:

设置取消按钮属性
Form2.Button2.DialogResult=DialogResult.cancel

设置肯定响应按钮(比如Button1)属性
Button1.DialogResult=DialogResult.OK

让Form2知道哪个是哪个:

Form2.AcceptButton = Button1
Form2.CancelButton = Button2
在Form1中,使用Form.DialogResult属性评估响应:
(用Using块括起来以正确处置()创建的对象)


另一种方式。
在Form2上创建自定义结果属性,并在表单关闭时检查其状态。

Class Form2
    (...)
    Public Property UserChoice As Boolean
    (...)

    Private Sub Button1_Click()
        Me.UserChoice = True
        Me.Close()
    End Sub

    Private Sub Button2_Click()
        Me.UserChoice = False
        Me.Close()
    End Sub

    (...)
End Class
表格一

Private Sub Button1_Click()
    Using obj As New Form2
        obj.ShowDialog(Me)

        If obj.UserChoice = False Then
           Me.Button2.Enabled = False
        End If

        'Or -> 
        Me.Button2.Enabled = obj.UserChoice
   End Using
End Sub

按钮2
在哪个窗体上?它是否与您生成代码的形式相同?尝试添加一个
MsgBox(“aa”)
以查看
result=dialogresult.Cancel
rally激发。如果激发,则需要指定按钮2的位置。例如:
form1.button2.enabled=false
Private Sub Button1_Click()
    Using obj As New Form2
        obj.ShowDialog(Me)

        If obj.UserChoice = False Then
           Me.Button2.Enabled = False
        End If

        'Or -> 
        Me.Button2.Enabled = obj.UserChoice
   End Using
End Sub