いつもお世話になっております。
・実現したいこと
WindowsFormApplicationで備品管理アプリを作っています。
LOADイベントで備品の写真を以下に示すコードによって各々表示していますが、処理が終了したあと
Kousinプロシージャで備品を新しいimageプロパティに変更したいと思っているのですが、
これが想定通り動いてくれていません。古いイメージのまま何も反映されていません。
表題の件ですが、
https://social.msdn.microsoft.com/Forums/vstudio/ja-JP/ca2b6a53-fdf9-40d2-b0e6-88e09f62c25e/21205303401239529983251041237512383124671253112488125251254012
多分この質問の投稿者の方と私のやりたいことは同じです。
Form1のLOADイベントで生成したコントロールのプロパティを別のプロシージャ(Kousin)で変更したいと考えています。
以下にソースコードを示します。
'ピクチャーボックスコントロール配列のフィールドを作成 Private bihin(,) As System.Windows.Forms.PictureBox Private Sub Form1_Load(sender as object, e as eventargs) handles mybase.load 'ピクチャーボックスコントロール配列の作成 me.bihin = new picturebox(3,7){} 'ピクチャーボックスコントロールのインスタンス作成し、プロパティを設定する For i as integer = 0 to 3 For j as integer = 0 to 7 Me.bihin(i, j) = New System.Windows.Forms.PictureBox() bihin(i, j).Location = New Point(25 + j * 13, 28 + 48 * i) bihin(i, j).Size = New Size(10, 22) bihin(i, j).Name = "bihin_" & i + 1 & j + 1 'パネル1のコントロールに含める panel1.Controls.Add(bihin(i, j)) Next Next End Sub Private Sub panel1_click(sender As Object, e As EventArgs) 'panel1をクリックしたら別フォームが開き、備品に対する処理を行う。 Dim t As New 貸出/返却フォーム t.tana_kigou = "C" t.SetBounds(Me.Left, Me.Top, Me.Width, Me.Height) t.ShowDialog(Me) t.Dispose() '処理が終わればKousinを呼び出して、備品のimageプロパティを新しいものに変える Call Kousin(sender, e) End Sub Private Sub Kousin(sender as object, e as eventargs) Dim fs as Filestream Dim img as image Dim newimg as image '新しいimageをデータベースから取り出します。 Dim conn as npgsqlconnection Dim newdata as string =command.ExecuteScalar() '古いイメージをdisposeして新しいimageを表示します。 For i As Integer = 0 To 3 For j As Integer = 0 To 7 fs = File.OpenRead(newdata) newimg = Image.FromStream(fs, False, False) Dim oldImage = bihin(i, j).Image bihin(i, j).Image = newimg oldImage?.Dispose() Next Next End Sub
上記コードのように書いているのですが、Kousinプロシージャが想定通り動いていてくれず、表示されるのは古いイメージのままです。
どこが問題なのかわかる方がおられましたら助言いただけませんか。よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー