2

テキスト ボックス、ボタン、パブリック共有プロパティを含むフォームがあります。ボタンは、データ グリッド ビューで別のフォームを表示します。データ グリッド ビューで行をクリックすると、選択された値が取得され、元のフォームのパブリック共有プロパティに割り当てられ、フォームが閉じられます。

Private Sub dgvAllSku_CellContentDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvAllSku.CellContentDoubleClick
    frmMain.Sku = dgvAllSku.Rows.Item(e.RowIndex).Cells(0).Value
    Me.Close()
End Sub

今私がしたいことは、このフォームが閉じるときに、元のフォームのテキスト ボックスに値 (frmMain.Sku) を入力することです。データ グリッド ビュー フォームが閉じたときに GotFocus イベントが再び発生し、そのイベントを使用してテキスト ボックスにパブリック プロパティの値を割り当てることができると思っていましたが、フォームが閉じたときにフォーカス イベントが発生しません。

Private Sub frmMain_Activated(sender As Object, e As EventArgs) Handles Me.GotFocus
    txtSku.Text = frmMain.Sku
End Sub

どうすればこれを達成できますか?

4

2 に答える 2

2

おそらく多くの方法がありますが、私が考えることができる最も簡単な方法はtxtSku.Text、 をパブリック プロパティとして公開し、他のウィンドウにそれ自体を設定させることです。

'Define in your main form
Public Property SkuText() As String
Get
    Return txtSku.Text
End Get
Set(ByVal value As String)
    txtSku.Text = value
End Set
End Property

次に、他のウィンドウからテキストを設定します。

Private Sub dgvAllSku_CellContentDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvAllSku.CellContentDoubleClick
    frmMain.SkuText = dgvAllSku.Rows.Item(e.RowIndex).Cells(0).Value
    Me.Close()
End Sub  

他のフォームがサブスクライブするイベントを発生させることもできます。または、両方のフォームを同時に使用できる理由がない場合はShowDialog、メイン フォームでの使用と実行だけが停止し、ユーザーが選択するのを待ちます。セルを返し、選択した値をフォームから簡単に取得します。

于 2013-09-11T17:23:06.440 に答える