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

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

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

リストボックス

ユーザーがリストから1つ以上のアイテムを選択できるようにするGUI要素です。

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

3回答

4007閲覧

リストボックスと配列について

pj7577bm60v

総合スコア13

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

リストボックス

ユーザーがリストから1つ以上のアイテムを選択できるようにするGUI要素です。

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2020/04/05 06:47

編集2020/04/05 06:53

前提・実現したいこと

C#を勉強しているものです。
ListBox1に変数str(test)を表示させたいのですが表示されません。

配列に入れたリストボックスにデータを表示させる方法をご教授おねがいします。
イメージ説明

発生している問題・エラーメッセージ

リストボックスなどを配列に入れる方法があるのを知ったのですがなかなかうまくいきません。 アルゴリズムが分かっていないからだと思うのですが何が足りなくて何が間違えているのかがわかりません。

該当のソースコード

C#

1public partial class Form1 : Form 2 { 3 private int x = 1; 4 private string str = ""; 5 6 readonly List<ListBox> listBoxes; 7 8 public Form1() 9 { 10 InitializeComponent(); 11 12 listBoxes = new List<ListBox> 13 { 14 null, 15 listBox1, 16 listBox2, 17 listBox3, 18 listBox4, 19 listBox5, 20 listBox6, 21 listBox7 22 }; 23 24 } 25 26 private void button1_Click(object sender, EventArgs e) 27 { 28 x = 1; 29 str = "test"; 30 var textint = listBoxes[listBoxItsems]; 31 if (textint != null) 32 { 33 textint.Text = str; 34 } 35 } 36 37 private int listBoxItsems 38 { 39 get 40 { 41 if (x == 1) return 1; 42 if (x == 2) return 2; 43 return 0; 44 } 45 } 46 }

試したこと

グーグル検索でうまく検索できなかったのですが、この解決法の調べ方も教えていただけたら幸いです。

補足情報(FW/ツールのバージョンなど)

Microsoft Visual Studio Community 2019
Version 16.5.0
.NET Framework version 4.8.03752

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

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

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

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

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

y_waiwai

2020/04/05 06:49

現状ではどうなっていて、それをどうしたいのでしょうか。 そこらへんを具体的に説明しましょう
Q71

2020/04/05 06:57

listBox1.Items.Add(str); ではダメな理由は?
pj7577bm60v

2020/04/05 07:05

現在作業途中でして、listBoxがかなりの量になってしまう予定です。 listBosを配列に入れられる技術を習得したいからです。 よろしくお願いします。
gentaro

2020/04/05 07:31

> listBosを配列に入れられる技術を習得したいからです。 意味がわかりません。 配列に入れるということは、それらをグループ化して一括して扱う必要があるからじゃないんですか? なんで1つのリストボックスに値をセットするために全てのリストボックスを配列で扱うんですか?
pj7577bm60v

2020/04/05 07:36

今一つの値しか用意していないのですが、値は複数用意する予定です。 現在習得のために値を一つしか用意していませんでした。
gentaro

2020/04/05 07:38

一つの値ってstrってやつの話? リストボックスを配列に入れることとなんの関係もない気がするんですが。
Q71

2020/04/05 09:16

listBoxes[0].Items.Add(str); でダメな理由は?
YAmaGNZ

2020/04/05 22:25

話がかみ合っていないですね。 セットする値(str)が1つであろうと、複数あろうと、その値がセットされるListBoxが1つなのであれば、配列に入っていようが1つのListBoxを指定するだけでその表現がListBox1になるのかlistBoxes[1]になるのかの違いでしかありません。 ですので、最終的にやりたいことは何なのですか?と皆さん聞いているのかと
guest

回答3

0

ListBox1に変数str(test)を表示させたいのですが表示されません。

textint.Text = str;

ListBoxのTextに値を設定しても,見た目には何も変化が見られないでしょう.
実際にはListBox.Itemsにデータを設定したいのではありませんか?

例えば,textint.Items.Add( str );とか.

投稿2020/04/06 06:40

編集2020/04/06 06:41
fana

総合スコア11996

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

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

pj7577bm60v

2020/04/08 13:59 編集

ご指摘ありがとうございました。 参考にさせていただきました。
guest

0

もしかして、

C#

1 listBoxes = new List<ListBox> 2 { 3 null, 4 listBox1, 5 listBox2, 6 listBox3, 7 listBox4, 8 listBox5, 9 listBox6, 10 listBox7 11 };

の部分に関係することでしょうか。

つまり、「わざわざlistBoxes = new List... とせずにそのまま配列として使いたい」っていうことでしょうか。
それなら

InitializeComponentメソッドを外して単純に自分で実装すればいいのではないでしょうか。

例えば、コントロールの配列を作成する とかですね。
(もしかしたら InitializeComponentメソッドを置いても問題はないかもしれませんが。ここは不確定。)

投稿2020/04/06 05:40

編集2020/04/06 06:29
BeatStar

総合スコア4962

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

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

YAmaGNZ

2020/04/06 05:49

そうなのであれば、デザイナで配置せずにFor文で回してListBoxをnewしていけばいいだけではないですか? そういったコードとコマンドラインコンパイルがどう関係するのか分かりません。 こちらのようなページを紹介するのであればまだ理解できますが https://dobon.net/vb/dotnet/control/buttonarray.html
BeatStar

2020/04/06 06:30 編集

YAmaGNZさん 確かにそうですね…。誤解されそうなのでURL先をお借りして修正します。 (意図としてはYAmaGNZさんがご提示したURLみたいなサイトだったんですが、すぐにヒットしたのが元のやつだったので…)
pj7577bm60v

2020/04/06 14:02

そうです。伝わらず申し訳ございませんでした。 参考にさせていただきました。 ありがとうございました。
guest

0

自己解決

この度は自分のやりたいことが伝えられず話を噛み合わせれずご迷惑をかけて申し訳ございませんでした。
みなさまの助言のおかげでやりたいことは実現にいたりました。
これから少しずつ成長していきたいと思っていますのでよろしければご指導ご鞭撻いただければ幸いです。
ありがとうございました。

C#

1public partial class Form1 : Form 2 { 3 private int x = 1; 4 private string str = ""; 5 6 private List<ListBox> listBoxes; 7 8 public Form1() 9 { 10 InitializeComponent(); 11 12 listBoxes = new List<ListBox> 13 { 14 null, 15 listBox1, 16 listBox2, 17 listBox3, 18 listBox4, 19 listBox5, 20 listBox6, 21 listBox7 22 }; 23 } 24 25 private void button1_Click(object sender, EventArgs e) 26 { 27 x = 1; 28 str = "test"; 29 30 var lis = listBoxes[listBoxItsems]; 31 32 if(lis != null) 33 { 34 lis.Items.Add(str); 35 } 36 } 37 private int listBoxItsems 38 { 39 get 40 { 41 if (x == 1) return 1; 42 if (x == 2) return 2; 43 return 0; 44 } 45 } 46 } 47

投稿2020/04/06 13:57

pj7577bm60v

総合スコア13

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問