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

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

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

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

Visual Studio 2012

Microsoft Visual Studio 2012は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2010の次のバージョンです

VB.NET

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

Q&A

解決済

1回答

1438閲覧

コレクションのインスタンス化について

退会済みユーザー

退会済みユーザー

総合スコア0

VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

Visual Studio 2012

Microsoft Visual Studio 2012は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2010の次のバージョンです

VB.NET

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

0グッド

0クリップ

投稿2019/03/18 13:08

##試した事
以前投稿したコードから改変しました。
##ソースコード

Form1

1 2Imports System.IO 3 Imports System 4 Imports System.Globalization 5 Imports System.Threading 6 7 Public Class Form1 8 9 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 10 If ListBox1.SelectedIndex = 0 Then 11 '新しいフォームです。 12 Form2.Show() 13 Me.Hide() 14 End If 15 End Sub 16End Class

Form2

1Imports System.ComponentModel 2Imports System.Globalization 3 4Public Class Form2 5 Private list As New Dictionary(Of String, Image)() 6 7 Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load 8 TextBox1.Enabled = False 9 list.Add("あ1", My.Resources.A00) 10 list.Add("あ2", My.Resources.A01) 11 list.Add("あ3", My.Resources.A02) 12 list.Add("い1", My.Resources.A03) 13 list.Add("い2", My.Resources.A04) 14 list.Add("い3", My.Resources.A05) 15 ComboBox1.DisplayMember = "Key" 16 ComboBox1.ValueMember = "Value" 17 ComboBox1.DataSource = New BindingSource(list, Nothing) 18 End Sub 19 Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged 20 TextBox1.Text = ComboBox1.GetItemText(ComboBox1.SelectedItem) 21 'PictureBox1.Image = TryCast(ComboBox1.SelectedValue, Image) 22 End Sub 23 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 24 PictureBox1.Image = TryCast(ComboBox1.SelectedValue, Image) 25 End Sub 26 Private Sub TextBox2_TextChanged(sender As Object, e As EventArgs) Handles TextBox2.TextChanged 27 Dim cca = New CultureInfo("ja-jp").CompareInfo 28 Dim opt As CompareOptions 29 opt = opt Or CompareOptions.IgnoreWidth '全角と半角を区別しない 30 opt = opt Or CompareOptions.IgnoreKanaType 'ひらがなとカタカナを区別しない 31 opt = opt Or CompareOptions.IgnoreCase '大文字と小文字を区別しない 32 opt = opt Or CompareOptions.IgnoreNonSpace '文字列比較で分音文字などの結合の分音文字を無視することを示します。 33 opt = opt Or CompareOptions.IgnoreSymbols '文字列の比較が空白文字が区切り記号、通貨記号、パーセント記号、数学記号、アンパサンド、やなどの記号を無視することを示します。 34 35 Dim txt As String = TextBox2.Text 36 37 ComboBox1.DataSource = List.Where( 38 Function(s) 39 Return 0 = cca.Compare(Strings.Left(s.Key, txt.Length), txt, opt) 40 End Function).ToArray() 41 42 End Sub 43 44 Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 45 Me.Hide() 46 Form1.Show() 47 End Sub 48End Class

コレクションのインスタンス?で文字入力、画像は表示させる事にしたのですか

##おしえて欲しいこと。
画像、文字入力、数字(番号)を追加したい事なのですが

Private list As New Dictionary(Of String, Image)()

これをもし

Private list As New Dictionary(Of String, Image'Integer)()

list (of String, Image'Integer)

にしたいんですが初心者なので頑張って努力して覚えようとしています。
どのように改変したらいいのでしょうか?
お願いいたします。
##バージョンなど
Vistualstudio2019
Vistual basic

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

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

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

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

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

guest

回答1

0

ベストアンサー

必要な情報をクラスや構造体に纏めて、それをDictionaryに入れればいいのではないでしょうか。

例)

VB.NET

1 Private Class Hogehoge 2 Public Property Number As Integer 3 Public Property Picture As Image 4 End Class 5 Private list As New Dictionary(Of String, Hogehoge) 6 7 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 8 list.Add("あ1", New Hogehoge() With {.Number = 1, .Picture = My.Resources.A00}) 9 list.Add("あ2", New Hogehoge() With {.Number = 2, .Picture = My.Resources.A01}) 10 End Sub

他の部分がどうなのか分からないので一概に言えませんが、DictionaryじゃなくてHogehogeクラスにKeyの値も入れて、List(of Hogehoge)でもいいような気もします。

投稿2019/03/18 13:37

YAmaGNZ

総合スコア10242

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

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

退会済みユーザー

退会済みユーザー

2019/03/18 15:00

回答ありがとうございます。 サンプルコード参考にします。 後もう一つ聞きたいことがあります。 最終的に完成させたい事は Private list As New Dictionary(Of String, Integer, (Image)) '↑このようにするとエラーが出ます。 Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load TextBox1.Enabled = False ’ Index0, 画像, 数字はtextbox1に表示 list.Add("あ1", My.Resources.A00, 0) list.Add("あ2", My.Resources.A01, 0) ComboBox1.DisplayMember = "Key" ComboBox1.ValueMember = "Value" ComboBox1.DataSource = New BindingSource(list, Nothing) end sub Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged 'Textbox1が数字が表示された状態でlist.add("あ1",0)←の0がtextbox1 'に表示されます。 TextBox1.Text = ComboBox1.SelectedValue.ToString '改変前はlist.add("あ1",0)、改変後はlist.add("あ1",My.Resources.A00) 'TextBox1.Text = ComboBox1.GetItemText(ComboBox1.SelectedItem) end sub Textbox1「数字表示」 Textbox2「文字入力」 Picturebox「画像表示」 list.Add("あ1", My.Resources.A00, 0) あ1=コンボボックスのアイテム名 My.Resources.A00=画像 0=textbox1に数字が表示するように作りたいと思ってます。 このように完成させようとしています。 追記書きました(ごめんなさい) すいませんよろしくお願いします。
YAmaGNZ

2019/03/18 20:10

DictionaryのValueとして、Image型とInteger型の2つの値を保持したいということですよね? DictionaryのValueは1つだけです。 ですので、複数の値を持つ場合として、その情報を格納するクラス(構造体)を作って、それをValueとして持たせるという回答をしています。
退会済みユーザー

退会済みユーザー

2019/03/19 08:51

>DictionaryのValueは1つだけです できないんですよね?・・・わかりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問