1

古いVB6コードを使用していて、修正しようとしているシナリオがあります。個人IDを入力して(上部のテキストボックスに賃貸人を使用)、[表示]をクリックすると、同じフォームのテキストボックスに予定が一覧表示されるフォームがあります。ユーザーが表示されたデータを編集して変更を保存できる新しいフォームをロードするボタンもあります。

たとえば、年齢を65歳から64歳に変更します。この変更を行って保存します。保存が成功し、フォームをアンロードしてForm1に戻ります。ただし、テキストボックスに表示されているデータを更新して変更が表示されるようにするには、もう一度[表示]をクリックする必要があります。このフォームを更新する方法がわからないため、ユーザーは[表示]をクリックしてテキストボックスに新しい値を再入力する必要はありません。誰かが助けることができますか?Form1の新しいインスタンスを作成するだけでは不十分です。作成すると、個人IDフィールドが空白になるためです。

ありがとう!

短いバージョン:関連する個人IDを取得しながら、最新のデータを取得するためにフォームを更新するにはどうすればよいですか。

4

4 に答える 4

4

あなたの質問に答えるのに十分な情報がここにありません。この状況で使用する一般的なパターンは次のとおりです。

  1. SearchFormはViewFormを起動します。
  2. ViewFormはEditFormを起動します。ViewFormがEditFormのインスタンスを作成するとき、Me(おそらくEditForm.Parentを設定することによって)EditFormに渡されます。
  3. EditFormの[保存]ボタンクリックイベントが発生すると、Parent.ReloadDataが呼び出されます(ParentはEditFormを起動したViewFormです)。
于 2013-01-11T15:06:56.983 に答える
2

これが機能するはずのアプローチです。エディターには、フォームがキャンセルされたかどうかを返すパブリックプロパティがあります。(。キャンセル)。年齢を変更しようとしている人の属性を保持するオブジェクトがあります。それなら、それはとても簡単です。メインフォームのコード:

dim oPerson as clsPerson
dim oFrm as frmAgeEditor

set oPerson = GetCurrentPerson()
set oFrm = new frmAgeEditor


with oFrm
    set .Person = oPerson
    .Show vbModal

    if not .Cancelled then
        ' Update Main form with the contents of oPerson

    end if

end with 
于 2013-01-12T00:54:30.203 に答える
0

更新後すぐに「表示」機能を呼び出すことができます。

于 2013-01-11T15:57:06.953 に答える
0
Call Me.frmParent.Refresh

これを使用して、データを失うことなく画面を更新しました。私はそれを理解するために多くの古いコードを掘り下げなければなりませんでした。このセクションはずっと前に書かれていて、うまく機能しました。

Public Sub Refresh()
Call cmdDetails_Click
If tvwScreeningSchedule.Nodes.Count > 0 Then
    tvwScreeningSchedule.SelectedItem = tvwScreeningSchedule.Nodes(1)
    Call tvwScreeningSchedule_Click
End If

End Sub

これは非常に特殊な関数であり、「cmdDetails_Click」には多くのカスタム検証が含まれていますが、AngryHackersの回答とそれほど違わないわけではありません。

于 2013-01-14T12:45:00.183 に答える