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

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

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

Microsoft Visual Basic .NET (VB.NET)とはオブジェクト志向のプログラム言語です。 Microsoft"s Visual Basic 6 のバージョンアップとしてみることができますが、Microsoft.NET Frameworktによって動かされています。

Q&A

解決済

1回答

668閲覧

親formのコントロールを子formで行う方法

xeee

総合スコア2

Visual Basic .NET

Microsoft Visual Basic .NET (VB.NET)とはオブジェクト志向のプログラム言語です。 Microsoft"s Visual Basic 6 のバージョンアップとしてみることができますが、Microsoft.NET Frameworktによって動かされています。

0グッド

0クリップ

投稿2022/07/11 05:02

VB.NET 初心者です。初投稿失礼します。
visual studio 2019 を使用しており、簡易的なwindowsフォームアプリケーションを作成しています。

やりたいこと

お店の商品をモバイルオーダーのように注文するようなプログラムを作っています。親formにて商品の写真を選び、画像をタッチ(picturebox)すると子formで作成したNumerickUpDown で個数を選択し、Buttonを押すと親formに作成したlistboxに "商品名×〇(個数)" と表示されると同時に子formを閉じるプログラムを作成したいです。自分なりに調べてみましたが、途中でつまってしまいました。どなたか教えていただけるとすごく助かります。

Public Class 子Form Private Shared 子forminstace As 子Form Public Shared Property 子forminstance() As 子Form Get Return 子forminstace End Get Set(ByVal value As 子Form) 子forminstace = value End Set End Property Public Property NumerickUpDown() As String Get Return NumericUpDown1.Value End Get Set(value As String) NumericUpDown1.Value = value End Set End Property Private Sub 子Form_Load(sender As Object, e As EventArgs) Handles MyBase.Load 子Form.子forminstace = Me End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim num As Integer = NumericUpDown1.Value If num > 0 Then End If End Sub End Class

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2022/07/11 05:23

で、しつもんはなんでしょうか
xeee

2022/07/11 05:34

言葉足らずで申し訳ないです。どのような書き方をすれば、listboxに出力できるかを教えていただきたいです。
guest

回答1

0

ベストアンサー

いかようにも書けるので、まずは設計から始めてみましょう。
・親画面から子画面に何の情報を渡すのか
・子画面から親画面に何の情報を返すのか
・親画面の更新は子から行うのか、それとも子が返す情報を受け取って親画面が行うのか
これらを列挙し、何か矛盾がないか、足りない情報はないか検討してください。
たとえば、子画面が親画面を更新するなら、親画面のインスタンスを子画面が知ってなきゃいけないよねーとか、ListBox に表示するための商品名も渡さなきゃいけないねーとか。
きちんと設計できれば書かなければいけないコードが見えてくるはずです。

追記

反応がないのでサンプルを書いておきます。(^_^;)

・親画面からは何も渡しません。
・子画面からは NumericUpDown に入力された値を返します。
・ListBox の更新は親が行います。

VB

1' 親画面 2Public Class ParentForm 3 4 Private Sub ParentForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load 5 PictureBox1.Tag = "商品001" ' 商品名を Tag プロパティにセットする 6 PictureBox1.Image = Image.FromFile("test.bmp") 7 End Sub 8 9 Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click 10 Dim pbox As PictureBox = DirectCast(sender, PictureBox) 11 Using child As New ChildForm() 12 If child.ShowDialog() = DialogResult.OK Then 13 ListBox1.Items.Add(String.Format("{0} x {1}", pbox.Tag, child.StockCount)) 14 End If 15 End Using 16 End Sub 17 18End Class 19 20' 子画面 21Public Class ChildForm 22 23 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 24 _StockCount = NumericUpDown1.Value 25 DialogResult = DialogResult.OK 26 End Sub 27 28 Private _StockCount As Decimal 29 30 Public ReadOnly Property StockCount As Decimal 31 Get 32 Return _StockCount 33 End Get 34 End Property 35 36End Class

投稿2022/07/11 06:31

編集2022/07/11 19:02
KOZ6.0

総合スコア2626

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

xeee

2022/07/11 23:07

返信遅れて申し訳ありません! もう一度構造から考え直してみます。サンプルコードまでわざわざ書いて頂いて本当に助かります!頑張って完成させてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問