質問するログイン新規登録
C#

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

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

1回答

1035閲覧

ListViewへの入力における値の追加後の表示とDBからの値読み取り後の表示の違いについて

Akashiksuk

総合スコア12

C#

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

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

1クリップ

投稿2019/06/26 15:45

0

1

以下、質問内容です。

C#でListViewに項目を表示するPGを作成中なのですが、

ソフト上でのListViewへの入力の場合、↓


ListViewItemのインスタンスを生成後、
Items.Addで0番目の項目(1列目の項目)へ値を追加したあと、
SubItems.Addで1番目以降(2列目以降の項目)へ追加します。

string[] s1 = { ListEnterText0.Text, ListEnterText1.Text, ListEnterText2.Text };

// リスト項目の設定
lvItem = new ListViewItem(s1[0]);

// 項目の追加
lv.Items.Add(lvItem);

// サブ項目の追加
lvItem.SubItems.Add(s1[1]);
lvItem.SubItems.Add(s1[2]);


ただ、DB(Access)から読み取りして表示する場合、↓


ループ処理中に行ごとにインスタンスを生成したあと、
ListViewItemのSubItemsで0番目(1行目)という流れ、つまり、サブ項目として
追加しています。
さらに不明なのは、0行目はSubItems[].Textですが、1行目はSubItems.Addとなります。

// ループ処理で読み取りをしていく
while (Reader.Read())
{
/*
* おそらくだが、
* 簡単に言うと、ループ処理中に各行にてインスタンスを生成し、
* 各列にて値があれば追加していくということ。
* 0番目でもサブ項目として追加する。
*
* ①1行目のインスタンス生成
* ②1行目の0番目からサブ項目としてみて値を追加する
* ③2行目以降も①と同様、インスタンスを生成という流れ
*/

lvItem = new ListViewItem(name); lvItem.SubItems[0].Text = Reader[0].ToString(); lvItem.SubItems.Add(Reader[1].ToString()); lvItem.SubItems.Add(Reader[2].ToString()); lv.Items.Add(lvItem);

}

以上のような、ListViewへの入力時とDBへの表示のときの、それぞれの違いについて
教えてください。

また、
「0行目はSubItems[].Textですが、1行目はSubItems.Add」
についても教えてください。

while内のコメントは、自分なりの理解内容なので、間違っている可能性は
十分あると思われます。

よろしくお願いいたします。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2019/06/26 21:59

何を作っているのですか。Windows Forms? WPF? ASP.NET Web Forms? その他? 開発環境 (OS, .NET, Visual Studio のバージョンなど) は?
退会済みユーザー

退会済みユーザー

2019/06/27 01:02

上のコメントに対する答がないですが、ListView というのは Windows Forms, WPF, ASP.NET Web Forms いずれにもあるのはご存知ですか? だから、ListView 云々というところから話を始めるのではなく、〇〇〇の ListView と書かないと・・・
Akashiksuk

2019/06/27 03:11

メッセージありがとうございます。 また改めて回答します。
guest

回答1

0

貴方がそう作ったからとしか言いようがありません。
別にDBからの追加だからとかという違いではありません。

lv.Items.Addのタイミングですが、SubItem追加前でも後でも同じです。

コンストラクタのListViewItem(string)の場合、内部でSubItemが1つ作成されます。
ですので、
lvItem.SubItems[0].Text = Reader[0].ToString();
としているのだと思うのですが
何故
lvItem = new ListViewItem(Reader[0].ToString());
としないかについては分かりません。

投稿2019/06/26 22:26

YAmaGNZ

総合スコア10681

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問