C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

DataRepeater上のPictureBox

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■94055 / inTopicNo.1)  DataRepeater上のPictureBox
  
□投稿者/ たかし (46回)-(2020/03/08(Sun) 13:53:50)

分類:[.NET 全般] 

お世話になっております、たかしです。
Form1のDataRepeater上に画像TextBoxと画像PictureBoxを配置しています。
画像TextBoxにはファイルのパスが記入されています。

  Private Sub Form1_Activated(sender As Object, e As EventArgs) Handles Me.Activated

Dim 画像ファイル名 As String
画像ファイル名 = Me.DataRepeater1.CurrentItem.Controls("画像TextBox").Text
Me.画像PictureBox.ImageLocation = 画像ファイル名

End Sub

のようにで写真を表示したいのですが、データの一行目の画像のみ、
それも飛び飛びに、表示されたりされなかったりしてしまいます。
どうすれば思った通りのことができるのでしょうか?

引用返信 編集キー/
■94056 / inTopicNo.2)  Re[1]: DataRepeater上のPictureBox
□投稿者/ 魔界の仮面弁士 (2596回)-(2020/03/09(Mon) 09:12:07)
No94055 (たかし さん) に返信
> 画像ファイル名 = Me.DataRepeater1.CurrentItem.Controls("画像TextBox").Text
> Me.画像PictureBox.ImageLocation = 画像ファイル名

Me.画像TextBox と Me.DataRepeater1.CurrentItem.Controls("画像TextBox") は別物ですし、
Me.画像PictureBox と Me.DataRepeater1.CurrentItem.Controls("画像PictureBox") も別物です。


Me.画像TextBox と Me.DataRepeater1.ItemTemplate.Controls("画像TextBox") は同じものですが、
これは文字通り、各アイテム行のテンプレートとなるものであって、DataRepeater によって
各行に繰り返し複製されている個々のコントロールとは異なります。


> どうすれば思った通りのことができるのでしょうか?

DataRepeater を使うなら、普通は「データバインド」で処理します。

型付 DataSet を使えば、デザイン時にバインドを済ませられますが、
下記のように、コードにてバインド対象の項目を割り当てていくこともできます。

Public Class Form1
  Private ds As DataSet

  Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Me.ds = New DataSet()

    Dim tbl = ds.Tables.Add("Table1")
    tbl.Columns.Add("Name")
    tbl.Columns.Add("URL")
    tbl.Rows.Add("Windows", "https://img-prod-cms-rt-microsoft-com.akamaized.net/cms/api/am/imageFileData/RE4pkvE")
    tbl.Rows.Add("Surface", "https://img-prod-cms-rt-microsoft-com.akamaized.net/cms/api/am/imageFileData/RE4pndL")
    tbl.Rows.Add("Office", "https://img-prod-cms-rt-microsoft-com.akamaized.net/cms/api/am/imageFileData/RE4pkv7")
    tbl.Rows.Add("XBox", "https://img-prod-cms-rt-microsoft-com.akamaized.net/cms/api/am/imageFileData/RE4pxBu")
    Me.ds.AcceptChanges()

    Me.BindingSource1.DataSource = Me.ds
    Me.BindingSource1.DataMember = tbl.TableName

    Me.画像Label.DataBindings.Add("Text", Me.BindingSource1, "Name", True)
    Me.画像TextBox.DataBindings.Add("Text", Me.BindingSource1, "URL", True)
    Me.画像PictureBox.DataBindings.Add("ImageLocation", Me.BindingSource1, "URL", True)

    Me.DataRepeater1.DataMember = Nothing
    Me.DataRepeater1.DataSource = Me.BindingSource1
  End Sub
End Class
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ