2

したがって、データグリッドからデータを取得し、グリッドを1つずつ通過するプログラムがありますが、を使用してフォームを閉じ、Me.Hideそれを使用して別のフォームから再度リロードするとfrmQuiz.Show、Loadイベントのコードが実行されませんfrmQuiz フォームとその結果、前回から残したレコードになります。フォームの Load イベントのコードを次に示します。


   Private Sub frmQuiz_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    tracker = 0 'to keep track of which record to retrieve from datagrid,in this case the first

    'TODO: This line of code loads data into the 'CompLitDataSet.tblQuestions' table. You can move, or remove it, as needed.
    Me.TblQuestionsTableAdapter.Fill(Me.CompLitDataSet.tblQuestions)
    hideGrid()
    dgData.DataSource = TblQuestionsTableAdapter.GetAllUnsorted
    Me.StartPosition = FormStartPosition.CenterParent 'load form at center screen
    ReDim answers(TblQuestionsBindingSource.Count)

    lblQuestion.Text = ""
    lblQuestionNumber.Text = ""
    PictureBox1.Visible = False
    radA.Checked = False
    radB.Checked = False
    radC.Checked = False
    radD.Checked = False

    viewQuestions(0) 'show first questions

End Sub
4

4 に答える 4

2

Me.Hideフォームを非表示にするだけで、メモリにロードされ、コードからアクセスできます。

Me.Closeメモリからフォームをアンロードし、コードからアクセスできなくなります。

于 2013-07-29T15:12:36.053 に答える
1

フォームが再読み込みされていません。

ドキュメントを確認してください: Form.Load イベント

フォームが初めて表示される前に発生します。

残念ながら、フォームが非表示または表示されているときのイベントはないようです-最初に表示されたときを除いて、それはトリガーさLoadれ、次にShown.

ただし、フォームが閉じているときと閉じた後のイベントがあります。それらを使用したい場合があります。フォームに関連するオブジェクトの状態が重要な場合は、フォームが再作成されたときに復元できるように、それらの状態をどこかに保存する必要があります。

于 2013-07-29T15:10:05.363 に答える
1

フォームを「非表示」にしているため、 Form_Load イベントは発生しません。
フォームを閉じてから、もう一度表示する必要があります。

于 2013-07-29T15:11:09.433 に答える
0

代わりに、コードをForm_LoadハンドラーからVisibleChangedハンドラーに移動することができます。

Private Sub Form1_VisibleChanged(sender As Object,
                                 e As System.EventArgs) Handles Me.VisibleChanged
  If CType(sender, Form)).Visible = True Then 'your code here
End Sub
于 2013-07-29T15:22:09.297 に答える