2016-07-14 3 views
1

두 개의 윈도우 폼이있는 가정용 폼에 울트라 그리드가있는 프로젝트를 사용 중입니다. 다른 데이터는 _dd 데이터로 표시됩니다. 데이터 형식 추가이 닫혀있을 때 ultragrid를 새로 고침하고 싶지만 현재 그렇게 할 수 없습니다.공유 서브 루틴 및 값 파싱

나는 나를 데이터를로드 홈 형태의 서브 루틴을 사용하여 ShowDialog.OK 가치를 얻을 수 있도록 추가 데이터 양식을 form_closing 서브 루틴 Public Shared Sub을해야, 그래서 새로 고침 여부를 알고있다. 그러나 공유 하위이므로 Me.Dispose을 사용할 수 없습니다. 이 문제를 어떻게 해결할 수 있습니까?

Private Sub fHome_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
' This is where the UltraGrid gets it's data from 

    If fAdd.ShowDialog() = DialogResult.OK Then 

     uwgDisplay.DataSource = Nothing 
     displayData() 

' addData form is open, then get the data from the database (dont refresh it) 

    Else 
displayData() 

' if add data form is closed, then refresh the data 
    End If 

    Me.Location = New Point(0, 0) 

End Sub 

는 인스턴스 메서드 내에서만 유효 양식 닫는 추가 양식 하위 나는

에게하고 모두 Me.Dispose() 라인에

Public Shared Sub Form_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing 

    If Globals.savedValue = False Then 

     Dim closeBox As MsgBoxResult 
     closeBox = MsgBox("Exit without saving?", MsgBoxStyle.Question + MsgBoxStyle.YesNo, "Confirm") 
     If closeBox = MsgBoxResult.Yes Then 
      Me.Dispose() 

     ElseIf closeBox = MsgBoxResult.No Then 
      e.Cancel = True 
      Exit Sub 
     End If 
    Else 
     Me.Dispose() 
    End If 

End Sub 

입니다

+0

그래서, 요약하기에 DialogResult를 얻을 공유 당신은 무엇을 당신이 필요로하는 Form_FormClosing''ShowDialog' 기능 '의 값을 (사용하는'fHome_Load' 서브 루틴이다, 할 필요가 없습니다하는 당신을 아직 덧붙여지지 않았다.)하지만 공개 공유 서브 (public Shared Sub)를 만드는 것으로 그것을 할 수 없다는 것을 의미한다. – David

+0

@David 예, 맞습니다. –

+0

@MattWilko fAdd.ShowDialog() = DialogResult.OK'를 공유 하위가 없으면 사용하려고했을 때 '비공유 멤버에 대한 참조는 객체 참조가 필요합니다. ' –

답변

0

진술서

"나는 나를 ShowDialog.OK를 얻을 수 있도록하기 위해 추가 데이터 폼 form_closing 서브 루틴에게 공개 공유 하위를 만들 필요가 있어요"잘못된입니다. FormClosing 방법은

Private _myform As frmFoo 

Private Sub Button19_Click(sender As Object, e As EventArgs) Handles Button19.Click 
    If _myform Is Nothing Then _myForm = New frmFoo 
    If _myform.ShowDialog = DialogResult.OK Then 
     'do something 
    End If 
End Sub 
+0

이 경우 어떻게해야합니까? 각 서브 루틴에서 사용할 코드는 무엇입니까? (나는 ShowDialog에 익숙하지 않으며 전에 사용 해본 적이 없다.) –

+0

안녕 Matt, 이것은 부분적으로는 작동했지만 'New fAdd'가 추가되었으므로 이제 데이터 형식이 홈 형식으로 열립니다. 코드를 어떻게 수정합니까? 이걸 막아? –

+0

생성자 (Public Sub New) 또는 무언가에 fAdd 양식을 표시하지 않는 한 그렇게하면 안됩니다. 어쨌든 버튼으로 인스턴스를 만들 수 있습니다. 내 업데이트보기 –