2017-12-27 7 views
0

vb.net 응용 프로그램을 개발 중입니다. 내가 양식을 가지고 메일 보내기 버튼을 클릭하면 메일 세부 정보를 입력하고 확인 및 취소 버튼이있는 메일을 보내는 또 다른 양식이 열립니다. VB.net 대화 상자가 닫히면 양식 새로 고침 및 사용 안 함

을 Form1에서

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

는 메일 형식 2로부터 전송 된 경우에만 활성화를 계산한다 버튼이 있고, 아래 형식 2 코드를 사용하는 열려면. 사용자가 form2에서 취소 버튼을 클릭하면 form1에서 버튼 필요를 계산할 수 없습니다. 어떤 일도 일어나지 않습니다. 다음은 내 코드, 코드 아래에 Form1에

Private Sub Button2_Click() 
     Dim obj As New Form1() 
     obj.initinfo(System.Windows.Forms.DialogResult.Cancel) 
     Me.Close() 
    End Sub 

은 위의 코드는 아무 효과가 없습니다

Friend Sub initinfo(result As DialogResult) 
    If (result = DialogResult.Cancel) Then 
     Me.Refresh() 
     Me.Activate() 
     Button2.Enabled = False 
    End If 
End Sub 

추가입니다. 몇 가지 제안을하십시오. 당신은 Form2를에 Form1의 새로운 인스턴스를 생성하는 사전 상 기사

+0

에서

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 

하는 양식 '에 button2'입니까? 코드를 생성하는 것과 같은 형식입니까? 'result = dialogresult.Cancel' 랠리가 실행되는지보기 위해서'MsgBox ("aa")'를 추가하십시오. 당신이 버튼 2가 어디에 있는지를 지정해야하는 것보다 발생한다면 :'form1.button2.enabled = false' –

답변

0

Form2에서 Button2 (취소 단추라고 가정)가 눌러지면 Button2를 사용하지 않도록 설정하려고합니다. 속성 창에서


:

설정하여 버튼 속성을 취소 Form2.Button2.DialogResult = DialogResult.Cancel
설정 Button1.DialogResult = DialogResult.OK

이 Form2를 인 알게 긍정적 인 반응 버튼 (의가 Button1을 가정 해 봅시다) 호텔 인 :

Form1의
Form2.AcceptButton = Button1 
Form2.CancelButton = Button2 

의 경우 양식을 사용하여 응답을 평가하십시오.DialogResult를 속성 :
(적절하게 폐기하기 위해 사용 블록에 둘러싸() 객체의 사용자가 만든)

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

     If obj.DialogResult = Windows.Forms.DialogResult.Cancel Then 
      Me.Button2.Enabled = False 
     End If 
    End Using 
End Sub 


또 다른 방법.
Form2에 사용자 지정 결과 속성을 만들고 양식이 닫힐 때 상태를 확인하십시오. Form1에

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 
1

덕분에,이 새로운 인스턴스는 원래의 형태를 참조하지만 새 양식을 만들 수 없습니다.

에 따라 올바른 단계는 다음과 같습니다

1.Create Form1에 단추의 속성.

Public ReadOnly Property BtnSubmit As Button 
    Get 
     Return button1 
    End Get 
End Property 

2. Form2의 Form1에 대한 속성을 만듭니다.

If (Not (Form1Instance) Is Nothing) Then 
    Form1Instance.BtnSubmit.Enabled = false 
End If 

를 귀하의 경우가 될 것입니다 : Form2를 인스턴스화하는 동안

Public Property Form1Instance As Form1 
    Get 
    End Get 
    Set 
    End Set 
End Property 

3.Now, 다음과 같이 사용, 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.On Form2를 참조로 Me 전달 :

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

아이디어를 얻길 바랍니다.