タイトル : Re^14: ListBoxから選択項目... 投稿日 : 2005/09/20(Tue) 14:53 投稿者 : じゅん
[OSのVer]:Windows [VBのVer]:VB.NET お世話になります。 exのエラーは ex={System.NullReferenceException} です。 それと、 プロジェクト→スタートアップをForm2に変えても同様の実行時エラーが出ます!!。 <下記にコード>米長くてすいません。 @From1(frm担当者コード入力) Private frm2 As New frm注文入力 Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOK.Click '***入力画面へ飛ぶ*** 'frm注文入力のテキストボックスにfrm担当者コードより書き込み() If txt担当者コード.Text <> "" Then frm2.MyForm2TextBox = txt担当者コード.Text frm2.ShowDialog() Else MsgBox("担当者コードを入力してください", MsgBoxStyle.OKOnly) txt担当者コード.Focus() End If txt担当者コード.Text = "" End Sub ========================================================================================= AForm2(frm注文入力) Private m_MasterDt As DataTable Private m_TestDt As DataTable 'frm注文入力のlblテーブルのプロパティの値を設定及び取得するためのプロパティ Public Property MyForm1TextBox1() As String Get 'lblテーブル.Text の内容を取得 Return lblテーブル.Text() End Get 'lblテーブル.Text に書き込み Set(ByVal Value As String) lblテーブル.Text = Value End Set End Property 'frm注文入力のlbl客数のプロパティの値を設定及び取得するためのプロパティ Public Property MyForm1TextBox2() As String Get 'lbl客数.Text の内容を取得 Return lbl客数.Text() End Get 'lbl客数.Text に書き込み Set(ByVal Value As String) lbl客数.Text = Value End Set End Property 'lbl担当のプロパティの値を設定及び取得するためのプロパティ Public Property MyForm2TextBox() As String Get 'lbl担当.Text の内容を取得 Return lbl担当.Text End Get 'lbl担当.Text に書き込み Set(ByVal Value As String) lbl担当.Text = Value End Set End Property Private Sub frm注文入力_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim scn As SqlClient.SqlConnection Try scn = New SqlClient.SqlConnection( _ "Data Source = localhost;PersistSecurityInfo=False" _ + ";IntegratedSecurity=SSPI;database=Yuukari") Dim dSet As DataSet = New DataSet("T_商品マスタ") Dim dAdp As SqlClient.SqlDataAdapter scn.Open() dAdp = New SqlClient.SqlDataAdapter( _ "SELECT * FROM T_商品マスタ", scn) dAdp.Fill(dSet, "T_商品マスタ") Me.m_MasterDt = dSet.Tables("T_商品マスタ") ''表示用 Me.m_TestDt = New DataTable With Me.m_TestDt .Columns.Add(New DataColumn("商品コード", GetType(String))) .Columns("商品コード").DefaultValue = "" .Columns.Add(New DataColumn("商品名", GetType(String))) .Columns("商品名").DefaultValue = "" .Columns.Add(New DataColumn("数量", GetType(String))) .Columns("数量").DefaultValue = "" End With Catch ex As Exception MessageBox.Show(ex.Message) Finally If Not IsNothing(scn) Then scn.Close() End Try btn削除.Enabled = False btn修正.Enabled = False btn送信.Enabled = False txt数量.Enabled = False txt商品.Enabled = False list商品.Enabled = False '/// 日付取得方法(今現在)2005/09/14 始まり//// Dim day As Date day = Now lbl営業日付.Text = Microsoft.VisualBasic.Left(day, 10) '/// 日付取得方法(今現在)2005/09/14 終わり//// End Sub Private Sub btn修正_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn修正.Click '修正したい商品(list商品の商品を選択)の数量を変更したいときに使う 'txt数量を変更後、修正ボタンをクリックすると数量が変更(list商品の数量)される予定 End Sub Private Sub btn削除_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn削除.Click '***今現在の削除方法 2005/09/17 始め*** '選択された商品を削除する If Not (list商品.SelectedItem Is Nothing) Then If MsgBox("削除してもよろしいですか?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then list商品.Items.Remove(list商品.SelectedItem End If Else MsgBox("商品を選択してから削除ボタンを押してください。") End If '***今現在の削除方法 2005/09/17 終わり*** End Sub Private Sub btn送信_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn送信.Click '送信作業 '終了作業(frm注文入力を終了してfrm担当者コードを表示(予定)) lbl担当.Text = "" lbl客数.Text = "" lblテーブル.Text = "" txt商品.Text = "" txt数量.Text = "" '***今現在 2005/09/17 始め*** '何もListBoxにはいってない状態で下記の処理をするとエラーが発生 list商品.Items.Clear() '***今現在 2005/09/17 終わり*** Me.Close() End Sub Private Sub btn入力_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn入力.Click Dim f2 As New frmデータ入力(Me) f2.Show() txt商品.Enabled = True End Sub Private Sub txt商品_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txt商品.KeyPress '数値しか入力できないように制限する(簡易型) ' .-1234567890 及び Enter/BackSpace キーしか入力できない If e.KeyChar >= Microsoft.VisualBasic.Chr(32) And e.KeyChar < Microsoft.VisualBasic.Chr (45) Or _ e.KeyChar > Microsoft.VisualBasic.Chr(57) Or e.KeyChar = Microsoft.VisualBasic.Chr(47) The n e.Handled = True '入力キーを無効にする End If End Sub Private Sub txt数量_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txt数量.KeyPress '数値しか入力できないように制限する(簡易型) ' .-1234567890 及び Enter/BackSpace キーしか入力できない If e.KeyChar >= Microsoft.VisualBasic.Chr(32) And e.KeyChar < Microsoft.VisualBasic.Chr (45) Or _ e.KeyChar > Microsoft.VisualBasic.Chr(57) Or e.KeyChar = Microsoft.VisualBasic.Chr(47) The n e.Handled = True '入力キーを無効にする End If End Sub Private Sub txt商品_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txt商品.LostFocus Try If Me.txt商品.Text = "" Then MessageBox.Show("商品コードが入力されていません") Exit Sub End If list商品.Items.Clear() Me.SetSyohinMaster(Me.txt商品.Text, False) For i As Integer = 0 To Me.m_TestDt.Rows.Count - 1 list商品.Items.Add(CType(Me.m_TestDt.Rows(i)("商品名"), String) _ + StrDup(21, " ") _ + CType(Me.m_TestDt.Rows(i)("数量"), String)) Next Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub Private Sub txt数量_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txt数量.TextChanged Try If Me.txt商品.Text = "" Then MessageBox.Show("商品コードが入力されていません") Exit Sub End If If Me.txt数量.Text = "" Then MessageBox.Show("数量が入力されていません") Exit Sub End If list商品.Items.Clear() Me.SetSyohinMaster(Me.txt商品.Text, True) For i As Integer = 0 To Me.m_TestDt.Rows.Count - 1 list商品.Items.Add(CType(Me.m_TestDt.Rows(i)("商品名"), String) _ + StrDup(21, " ") _ + CType(Me.m_TestDt.Rows(i)("数量"), String)) Next Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub Private Sub SetSyohinMaster(ByVal syohin As String, ByVal suryo As Boolean) Try If Not suryo Then 'DB(m_MasterDt)に商品コードが存在するかどうかのチェック Dim rows() As DataRow = Me.m_MasterDt.Select("商品コード=" + syohin) Dim shohinname As String If rows.Length = 1 Then '商品マスタに存在したら、商品名を取得する。 shohinname = CType(rows(0)("商品名"), String) If Me.m_TestDt.Select("商品コード=" + syohin).Length < 1 Then '該当する商品コードがm_TestDtに存在しなければ、Rowを追加する。 Me.m_TestDt.Rows.Add(New Object() {syohin, shohinname, ""}) End If Else Throw New Exception("商品コードが存在しません") End If Else Dim rows() As DataRow = Me.m_TestDt.Select("商品コード=" + syohin) If rows.Length = 1 Then rows(0).BeginEdit() rows(0)("数量") = Me.txt数量.Text rows(0).EndEdit() End If End If Catch ex As Exception Throw ex End Try End Sub ===================================================== Form3(frmデータ入力) Private Sub txtテーブル番号_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtテーブル番号.KeyPress '数値しか入力できないように制限する(簡易型) ' .-1234567890 及び Enter/BackSpace キーしか入力できない If e.KeyChar >= Microsoft.VisualBasic.Chr(32) And e.KeyChar < Microsoft.VisualBasic.Chr (45) Or _ e.KeyChar > Microsoft.VisualBasic.Chr(57) Or e.KeyChar = Microsoft.VisualBasic.Chr(47) The n e.Handled = True '入力キーを無効にする End If End Sub Private Sub txt客数_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txt客数.KeyPress '数値しか入力できないように制限する(簡易型) ' .-1234567890 及び Enter/BackSpace キーしか入力できない If e.KeyChar >= Microsoft.VisualBasic.Chr(32) And e.KeyChar < Microsoft.VisualBasic.Chr (45) Or _ e.KeyChar > Microsoft.VisualBasic.Chr(57) Or e.KeyChar = Microsoft.VisualBasic.Chr(47) The n e.Handled = True '入力キーを無効にする End If End Sub Private Sub btnクリア_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnクリア.Click txtテーブル番号.Text = "" txt客数.Text = "" End Sub Private Sub btnキャンセル_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnキャンセル.Click Me.Close() End Sub Private frm1 As New frm注文入力 'frmデータ入力のコンストラクタ Public Sub New(ByVal f1 As frm注文入力) InitializeComponent() '呼び出しの後にコンストラクタコードを追加 frm1 = f1 End Sub Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOK.Click If txtテーブル番号.Text <> "" And txt客数.Text <> "" Then frm1.MyForm1TextBox1 = txtテーブル番号.Text frm1.MyForm1TextBox2 = txt客数.Text Me.Close() Else MsgBox("テーブル番号・客数を入力してください", MsgBoxStyle.OKOnly) txtテーブル番号.Focus() End If End Sub =================================================================== 以上今現在の動きに必要なコードです。 よろしくお願いします |