
現在、MDBからレコードを読み込み、
データグリッド・フォームに内容を表示させるアプリを作成しています。
■前提
下記のような親・子フォームが存在します。
【親フォーム】
・データグリッドにレコードの一覧を表示。
・子フォームを開く際、IDを引き渡している。
【子フォーム】
・レコードの詳細を表示。
・プロパティでIDを取得。
・フォームを開く際にIDをキーに、MDBからレコードを読み込む。
子フォームにあるボタンを押すことで、
親フォームにあるデータグリッドのフォーカスを移動したいと考えております。
また子フォームのデータも、親フォームのフォーカス移動に併せて
表示しなおすことを考えております。
(※画像参照)
■質問
(1)子フォームから親フォームのデータグリッドのフォーカス移動は可能でしょうか。
(2)子フォームの開きなおしをせずに、親フォームから新たにIDを取得し、レコードを読み込みなおすことは可能でしょうか。
以上、よろしくお願いします。
■開発環境
・作成アプリケーションの種類:Windowsフォーム
・開発環境:Windows7 64bit/Visual Studio Professional 2012 /.NET Framework 4.5
■修正コード1
VB.NET
1Public Class 親フォーム 2 3 Private Sub Button詳細_Click(sender As Object, e As EventArgs) Handles Button詳細.Click 4 Using 子フォーム As New 子フォーム 5 AddHandler 子フォーム.UpClick, AddressOf 子フォーム_UpClick 6 Dim _data as New DataStructure 7 '選択している行のデータを取得 8 _data.ID=.... 9 10 子フォーム.SetData( _data ) 11 子フォーム.ShowDialog(Me) 12 End Using 13 End Sub 14 15 Private Sub 子フォーム_UpClick(sender As Object, e As EventArgs) 16 With DataGridView1 17 '1行上を選択 18 '新たに選択した行のデータを取得 19 Dim _data as New DataStructure 20 _data.ID=.... 21 22 子フォーム.SetData( _data ) 23 End With 24 End Sub 25End Class 26 27 28Public Class 子フォーム 29 Private _ID As Integer 30 Public Property ID() As Integer 31 Get 32 Return _ID 33 End Get 34 Set(value As Integer) 35 _ID = value 36 End Set 37 End Property 38 39 Public Structure DataStructure 40 Dim ID As Integer 41 '............. 42 End Structure 43 44 Private Sub frmHitSyosai_Load(sender As Object, e As EventArgs) Handles MyBase.Load 45 display() 46 End Sub 47 48 Private sub display() 49 Dim strSql as String 50 'SQLを作成 51 strSql = "SELECT * FROM テーブル WHERE USRID = ID" 52 'OleDbDataReaderでレコード取得 53 54 '表示処理 55 lblID.text = ... 56 End Sub 57 58 Public Event UpClick(ByVal sender As Object, ByVal e As EventArgs) 59 60 '親フォームからデータを取得 61 Public Sub SetData(ByVal d As DataStructure) 62 '表示ロジック 63 display() 64 End Sub 65 66 '上をクリックした旨のイベントを発行 67 Private Sub ButtonUp_Click(sender As Object, e As EventArgs) Handles ButtonUp.Click 68 RaiseEvent UpClick(Me, New EventArgs) 69 End Sub 70 71End Class
■修正コード2
VB.NET
1Public Class 子フォーム 2 Private _ID As Integer 3 Public Property ID() As Integer 4 Get 5 Return _ID 6 End Get 7 Set(value As Integer) 8 _ID = value 9 End Set 10 End Property 11 12 Public Structure DataStructure 13 Dim ID As Integer 14 '............. 15 End Structure 16 17 Private Sub frmHitSyosai_Load(sender As Object, e As EventArgs) Handles MyBase.Load 18 display() 19 End Sub 20 21 Private sub display() 22 Dim strSql as String 23 'SQLを作成 24 strSql = "SELECT * FROM テーブル WHERE USRID = ID" 25 'OleDbDataReaderでレコード取得 26 27 '表示処理 28 lblID.text = ID 29 Debug.Print(ID) 30 '............. 31 Me.Refresh() 32 33 End Sub 34 35 '親フォームからデータを取得 36 Public Sub SetData(ByVal d As DataStructure) 37 '表示ロジック 38 display() 39 End Sub 40 41 Private Sub ButtonUp_Click(sender As Object, e As EventArgs) Handles ButtonUp.Click 42 Dim frm As New 親フォーム 43 frm = CType(Me.Owner, 親フォーム) 44 frm.子フォーム_UpClick(sender, e) 45 End Sub 46 47End Class 48
回答4件
あなたの回答
tips
プレビュー