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

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

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

comboboxをすべて表示させたい

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

■90460 / inTopicNo.1)  comboboxをすべて表示させたい
  
□投稿者/ aa (1回)-(2019/03/12(Tue) 17:59:16)

分類:[VB.NET/VB2005 以降] 

2019/03/12(Tue) 18:17:12 編集(投稿者)
2019/03/12(Tue) 18:13:37 編集(投稿者)

<pre><pre>Vistual Basicです。

ソースコード
Imports System.ComponentModel
Imports System.Globalization
Public Class Foam3

Private ReadOnly list As New Dictionary(Of String, Integer)
Private ReadOnly list1 As New Dictionary(Of String, Integer)
Private ReadOnly list2 As New Dictionary(Of String, Integer)
Private ReadOnly list3 As New Dictionary(Of String, Integer)
Private ReadOnly list4 As New Dictionary(Of String, Integer)
Private ReadOnly list5 As New Dictionary(Of String, Integer)
Private ReadOnly list6 As New Dictionary(Of String, Integer)
Private ReadOnly list7 As New Dictionary(Of String, Integer)
Private ReadOnly list8 As New Dictionary(Of String, Integer)
Private ReadOnly list9 As New Dictionary(Of String, Integer)
Private ReadOnly list10 As New Dictionary(Of String, Integer)
Private ReadOnly list11 As New Dictionary(Of String, Integer)
Private ReadOnly list12 As New Dictionary(Of String, Integer)
Private ReadOnly list13 As New Dictionary(Of String, Integer)
Private ReadOnly list14 As New Dictionary(Of String, Integer)
Private ReadOnly list15 As New Dictionary(Of String, Integer)
Private ReadOnly list16 As New Dictionary(Of String, Integer)
Private ReadOnly list17 As New Dictionary(Of String, Integer)

Private Sub Foam3_Load(sender As Object, e As EventArgs) Handles Me.Load
list.add("a",0)
list1.add("b",0)
list2.add("c",0)
list3.add("d",0)
list4.add("e",0)
list5.add("f",0)
list6.add("g",0)
list7.add("h",0)
list8.add("i",0)
list9.add("j",0)
list10.add("k",0)
list11.add("l",0)
'省略
list17.add("r",0)

ComboBox1.DisplayMember = "key"
ComboBox1.ValueMember = "value"
ComboBox1.DataSource = New BindingSource(list, Nothing)
ComboBox1.DropDownStyle = ComboBoxStyle.DropDownList
end sub

'radiobutton使用

Private Sub R18_CheckedChanged(sender As Object, e As EventArgs) Handles R18.CheckedChanged
If R18.Checked = True Then
ComboBox1.DataSource = New BindingSource(list, list1, list2,
list3, list4, list5, list6, list7, list8, list9, list10,
list11, list12, list13, list14, list15, list16, list17, Nothing)

End If
End Sub

コード全体です。

エラー場所
BindingSourceの部分で

エラー この引数の数を受け付ける 'New' がないため、オーバーロードの解決に失敗しました。


やりたい事、わからない事
・list〜list17までをすべて表示させたいんですがエラーがでてしまい改善出来ません。
初心者ですのでお助け下さい。お願いします。

Vistualstudio2019 Vistual basic



</pre></pre>
引用返信 編集キー/
■90462 / inTopicNo.2)  Re[1]: comboboxをすべて表示させたい
□投稿者/ 魔界の仮面弁士 (2104回)-(2019/03/12(Tue) 19:02:42)
2019/03/12(Tue) 19:05:54 編集(投稿者)

No90460 (aa さん) に返信
> comboboxをすべて表示させたい
ComboBox「に」すべてを表示させたい、でしょうか。


> エラー この引数の数を受け付ける 'New' がないため、オーバーロードの解決に失敗しました。
New BindingSource(〜) では、19 個もの引数を受け付けるオーバーロードが無いためです。


> ・list〜list17までをすべて表示させたいんですがエラーがでてしまい改善出来ません。
元のコードを活かすなら、
 ComboBox1.DataSource = New BindingSource(list.Concat(list1).Concat(list2).Concat(list3)…….Concat(list17), Nothing)
とか。



> Public Class Foam3
[foam] … あぶく、泡
[form] … 定型、形式、記入用紙


> Private ReadOnly list As New Dictionary(Of String, Integer)
List(Of ) 型ではないけれど、変数名は list なんですね…。


> list.add("a",0)
> list1.add("b",0)
.add ではなく、.Add ですよね?

大文字小文字の差異だけではなく、通常、自動フォーマットされるはずの
空白も失われていますので、実際のコードを貼り付けたわけではなさそうですね。


> list2.add("c",0)
> list3.add("d",0)
> list4.add("e",0)
ひとつの Dictionary に、一つのエントリしか登録されないのですか?

RadioButton の役割が読み取れませんでしたが、
全部まとめて一つの Dictionary に
 list.Add("a", 0)
 list.Add("b", 1)
 list.Add("c", 2)
 list.Add("d", 3)
のように登録しておいて、
 ComboBox1.DataSource = New BindingSource(list, Nothing)
あるいは、
 ComboBox1.DataSource = list.ToHashSet().ToArray()
で良い気がしました。
引用返信 編集キー/
■90465 / inTopicNo.3)  Re[2]: comboboxをすべて表示させたい
□投稿者/ aa (2回)-(2019/03/12(Tue) 20:21:04)
魔界の仮面弁士さん
回答ありがとうございます。
>元のコードを活かすなら、
> ComboBox1.DataSource = New BindingSource(list.Concat(list1).Concat(list2).Concat(list3)…….Concat(list17), Nothing)
>とか。

活かした結果無事comboboxにアイテムをすべて表示されました。

文字の誤り失礼いたしました。

radiobutton1〜17ありましてそれをlist~list17.addと別種類で作りました。

> list.Add("a", 0)
> list.Add("b", 1)
> list.Add("c", 2)
> list.Add("d", 3)
>のように登録しておいて、
> ComboBox1.DataSource = New BindingSource(list, Nothing)
>あるいは、
> ComboBox1.DataSource = list.ToHashSet().ToArray()
>で良い気がしました。
こちらも参考になりました。
ありがとうございました。
解決済み
引用返信 編集キー/

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


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

このトピックに書きこむ