質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

解決済

VB.NET DataGridViewの新規登録について

mon121
mon121

総合スコア2

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

3回答

0評価

0クリップ

476閲覧

投稿2021/12/14 07:44

編集2021/12/14 08:41

前提・実現したいこと

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で読み込んでいます。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。