2016-07-15 6 views
0

내 프로그램이 내가 원하는대로 다른 폼을 열었습니다. 해답이 그것을 해결했습니다.폼이로드시 열림

기본적으로 프로그램을 시작할 때 양식 열림을 중지하고 싶지만 버튼을 누르면 수동으로 열 때 양식 데이터가 업데이트됩니다. 문제의 두 번째 부분은 해결되지 않았지만 첫 번째 부분은 해결되었습니다.

답변

0

당신은 이런 식으로 뭔가를 시도 할 수 있습니다 :

Public Class HomeForm 
     Private WithEvents m_DataChangeForm As DataChangeForm 

     Private Sub HomeForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
      m_DataChangeForm = New DataChangeForm() 
      m_DataChangeForm.Show() 
     End Sub 

     Private Sub OnDataSourceChanged(sender As Object, args As EventArgs) Handles m_DataChangeForm.OnDataSourceChanged 
      MessageBox.Show("Data source changed!") 
     End Sub 
    End Class 

    Public Class DataChangeForm 
     Inherits Form 

     Public Event OnDataSourceChanged(sender As Object, args As EventArgs) 

     Private WithEvents m_Button As Button 

     Public Sub New() 
      m_Button = New Button() 
      m_Button.Text = "Change" 
      m_Button.Parent = Me 
     End Sub 

     Public Sub buttonClick(sender As Object, args As EventArgs) Handles m_Button.Click 
      RaiseEvent OnDataSourceChanged(sender, args) 
      Me.Close() 
     End Sub 
    End Class 

이유 양식이 표시됩니다 당신이 ShowDialog를 호출 becaouse HomeForm되기 전에, 차단을 DataChangeForm이 닫힐 때까지.

+0

안녕하세요, 미안 해요, 당신이 내 뜻을 오해 한 것 같아요. 내'dataChangefrm'가'Homefrm_Load '에 전혀 표시되지 않게하려면'dataChangefrm'이 닫힐 때'Homefrm'의 UltraGrid가 업데이트되기를 원합니다. –

+0

폼로드 이벤트에 Show를 추가했지만 필요한 곳에 놓으십시오. –

0

"로드"에서 "표시된"이벤트로 코드를 이동해야합니다.

Private Sub Homefrm_Shown(sender As Object, e As EventArgs) Handles Me.Shown 

    Using fp = New dataChangefrm(m_database) 

     If fp.ShowDialog() = DialogResult.OK Then 
      uwgHome.DataSource = Nothing 
      loadData() 

     End If 
    End Using 

    Me.Location = New Point(0, 0) 
loadData() 
End Sub 

첫 번째 줄의 핸들을 살펴보십시오. 귀하의 프로젝트에 따라 다릅니다.