2016-07-14 4 views
1

私は2つのウィンドウ形式の1つのホームフォームをultragridで、あるデータを表示し、もう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

を取得するために共有する必要はありませんまだ追加されていませんが、それを 'Public Shared Sub'とすることで、あなたはそれをどうクローズするのか分からないのですか? – David

+0

@Davidはい、それは正しいです –

+0

@MattWilko 'fAdd.ShowDialog()= DialogResult.OK'を共有サブなしで使用しようとしたとき '非共有メンバーへの参照にはオブジェクト参照が必要です' –

答えて

0

お客様の声明

を間違っていません「私は私がShowDialog.OKを取得できるようにする 公共の共有サブは追加データフォームform_closingサブルーチンを作るために必要です」。あなたが必要なものを、要約することはどのあなた「Form_FormClosing``ShowDialog`機能(からの値を使用するために、 `fHome_Load`サブルーチンで、FormClosing方法は、だから、DialogResult

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

こんにちはマット、これは部分的にうまくいきましたが、これは 'New fAdd'を作成しているのでデータフォームがホームフォームで開きます。これを防ぐ? –

+0

コンストラクタ(Public Sub New)などでfAddフォームを表示している場合を除き、これを行うべきではありません。とにかくボタンでインスタンス化できます。私の更新を見る –

関連する問題