前提・実現したいこと
DataGridviewのレコードの追加を行いたいです。
行いたい動作としては、ユーザー一覧画面の「新規登録」をおすとユーザー登録画面が出てきます。
ユーザーIDやパスワードを入力し、登録ボタンを押すと、
ユーザー登録画面が消え、ユーザー一覧画面のDataGridviewが更新される。といった動きです。
画面はどちらもウィンドウズフォームで作成しています。
発生している問題・エラーメッセージ
現状では、ユーザー登録画面にわざとDataGridviewを表示させ、新規でユーザーID等を入力し、
新規登録ボタンを押すと問題なくデータが追加されます。
ですが、新規登録で入力したユーザーID等(変数)をユーザー一覧へ渡す方法がわかりません。
スコープを使いPublicで変数を定義したりしたのですが、エラーは出なかったのですが、
ユーザー一覧画面のデータが更新されませんでした。
また、上記の事を実現したい場合は、データを別なフォームへ渡すという考え方でよいのでしょうか?
それとも参照しているデータベースが共通なので、直接そこを操作するという考え方なのでしょうか。
該当のソースコード
**新規登録画面コード** Public Class new_user Private Sub new_user_Load(sender As Object, e As EventArgs) Handles MyBase.Load 'TODO: このコード行はデータを 'SHINAGAWA_TRAININGDataSet4.MST_USER' テーブルに読み込みます。必要に応じて移動、または削除をしてください。 Me.MST_USERTableAdapter.Fill(Me.SHINAGAWA_TRAININGDataSet.MST_USER) End Sub '登録ボタンのクリック Public Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim frm As New new_user() frm.ShowDialog(Me) '変数の宣言 Dim flg As Int16 flg = 0 Dim id As String id = TextBox1.Text Dim pass As String pass = TextBox2.Text Dim name As String name = TextBox3.Text Dim age As String age = TextBox4.Text '文字列長さ判定用変数 Dim lenid As Integer = id.Length() Dim lenpass As Integer = pass.Length() Dim lenname As Integer = name.Length() '性別の判定 Dim gender As String gender = 0 If RadioButton1.Checked = True Then gender = 1 ElseIf RadioButton2.Checked = True Then gender = 2 ElseIf RadioButton3.Checked = True Then gender = 3 ElseIf gender = 0 Then '性別が未選択の場合 sex_null_error.Show() flg = 1 End If Dim i As Integer = DataGridView1.Rows.Count - 1 '追加した行に値をセット DataGridView1.Rows(i).Cells(0).Value = frm.id DataGridView1.Rows(i).Cells(1).Value = frm.pass DataGridView1.Rows(i).Cells(2).Value = frm.Name DataGridView1.Rows(i).Cells(3).Value = frm.gender DataGridView1.Rows(i).Cells(4).Value = frm.age '追加した行にフォーカスを移す DataGridView1.CurrentCell = DataGridView1(0, i) 'ユーザーIDが空白の場合 If id = "" Then ID_null_error.Show() flg = 1 'ユーザーIDが11文字以上の場合 ElseIf lenid > 11 Then ID_10over_error.Show() flg = 1 'ユーザーIDが半角英数字かの判定 ElseIf System.Text.RegularExpressions.Regex.IsMatch(id, "^[a-zA-Z0-9]+$") = False Then ID_hankaku_error.Show() flg = 1 End If 'パスワードが空白の場合 If pass = "" Then PASS_null_error.Show() flg = 1 'パスワードが3文字~10字以外のとき ElseIf 3 > lenpass Or lenpass > 10 Then PASS_mozisuu_error.Show() flg = 1 'パスワードが半角英数字かの判定 ElseIf System.Text.RegularExpressions.Regex.IsMatch(pass, "^[a-zA-Z0-9]+$") = False Then PASS_hankaku_error.Show() flg = 1 End If 'ユーザー名が空白の場合 If name = "" Then name_null_error.Show() flg = 1 'ユーザー名が50文字を超える場合 ElseIf lenname > 50 Then name_50over_error.Show() flg = 1 End If '年齢が空白の場合 If age = "" Then age_null_error.Show() flg = 1 '年齢が半角数字かの判定 ElseIf System.Text.RegularExpressions.Regex.IsMatch(age, "^[0-9]+$") = False Then agehankaku_error.Show() flg = 1 End If 'エラーが出なかったら登録画面を閉じる 'If flg = 0 Then '自画面を非表示 'Me.Visible = False 'End If End Sub 'キャンセル 押すとポップアップを閉じる' Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click '自画面を非表示 Me.Visible = False End Sub **ユーザー一覧コード** Public Class all_user Private Sub Form3_Load(sender As Object, e As EventArgs) Handles MyBase.Load 'TODO: このコード行はデータを 'SHINAGAWA_TRAININGDataSet.MST_USER' テーブルに読み込みます。必要に応じて移動、または削除をしてください。 Me.MST_USERTableAdapter.Fill(Me.SHINAGAWA_TRAININGDataSet.MST_USER) End Sub 'ログアウト ログイン画面へ' Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click '自画面を非表示 Me.Visible = False 'Form1を表示 Dim f2 As New rogin f2.Show() End Sub '戻る メニュー画面へ' Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click '自画面を非表示 Me.Visible = False 'Form2を表示 Dim f2 As New Menu f2.Show() End Sub '新規登録 登録画面へ' Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click Dim f2 As New new_user f2.Show() End Sub Private Sub DataGridView1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick End Sub End Class
補足情報(FW/ツールのバージョンなど)
環境
ウィンドウズ7
Visual stugio 2013
言語 VB.NET
フレームワーク .NETフレームワーク4.5
データベースはSQLサーバー2016で作成したものをDataGridViewで読み込んでいます。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/12/15 04:31 編集