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

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

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

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

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

Q&A

解決済

1回答

1921閲覧

動的にTabを生成し、そのTab画面の上に動的にListViewを2つ配置をしたいです

_string

総合スコア15

C#

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

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

0グッド

0クリップ

投稿2020/10/01 10:58

編集2020/10/01 13:30

前提・実現したいこと

動的にTabを生成し、そのTab画面の上に動的にListViewを2つ配置をしたいです。

発生している問題

添付ファイルのListviewにカラム幅を指定してもSizeを指定しても、添付した画像のSizeを0とした上で、Sizeが広がってきます。
ですから、Sizeの基準値がおかしいという問題が発生しております。

以下のような画面です。
イメージ説明

該当のソースコード

c#

1 InstanceTab = new TabControl(); 2 InstanceTab.Name = "InstanceTab"; 3 InstanceTab.Size = new Size(1225, 599); 4 InstanceTab.TabIndex = 0; 5 Group.Controls.Add(InstanceTab); 6 7 InstancePage = new TabPage(); 8 InstancePage.Name = "GroupInstance"; 9 InstancePage.Padding = new System.Windows.Forms.Padding(3); 10 InstancePage.TabIndex = 0; 11 InstancePage.Text = "当選したアカウントとデータ一覧"; 12 InstancePage.UseVisualStyleBackColor = true; 13 InstancePage.AutoScroll = true; 14 InstanceTab.Controls.Add(InstancePage); 15 16 InstanceListView = new ListView(); 17 InstanceListView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | 18 System.Windows.Forms.AnchorStyles.Bottom) 19 | System.Windows.Forms.AnchorStyles.Left) 20 | System.Windows.Forms.AnchorStyles.Right))); 21 ColumnHeader[] columnHeader = new ColumnHeader[10]; 22 string[] column_TextFirst = new string[10] 23 { 24 "当選アカウント", 25 "当選キャラ", 26 "購入金額", 27 "販売者ユーザー名", 28 "販売者名前", 29 "取引銀行", 30 "口座番号", 31 "支店", 32 "口座名義人", 33 "連絡先" 34 }; 35 int[] column_Width = new int[10]{ 100, 100, 80, 100, 120, 120, 100, 80, 100, 130 }; 36 for (int r = 0; r < column_TextFirst.Length; r++) { 37 columnHeader[r] = new ColumnHeader(); 38 columnHeader[r].Text = column_TextFirst[r]; 39 columnHeader[r].Width = column_Width[r]; 40 InstanceListView.Columns.Add(columnHeader[r]); 41 } 42 InstanceListView.HideSelection = false; 43 InstanceListView.Name = "ListViewInstance"; 44 InstanceListView.Size = new System.Drawing.Size(1215, 590); 45 InstanceListView.TabIndex = 0; 46 InstanceListView.UseCompatibleStateImageBehavior = false; 47 InstanceListView.FullRowSelect = true; 48 InstanceListView.GridLines = true; 49 InstanceListView.Sorting = SortOrder.Ascending; 50 InstanceListView.View = View.Details; 51 InstancePage.Controls.Add(InstanceListView); 52 53 InstancePage = null; 54 InstancePage = new TabPage(); 55 InstancePage.Name = "GroupInstance"; 56 InstancePage.Padding = new System.Windows.Forms.Padding(3); 57 InstancePage.TabIndex = 0; 58 InstancePage.Text = "当選者へ振り込み済み画像を送信"; 59 InstancePage.UseVisualStyleBackColor = true; 60 InstancePage.AutoScroll = true; 61 InstanceTab.Controls.Add(InstancePage); 62 InstanceListView = new ListView(); 63 InstanceListView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | 64 System.Windows.Forms.AnchorStyles.Bottom) 65 | System.Windows.Forms.AnchorStyles.Left) 66 | System.Windows.Forms.AnchorStyles.Right))); 67 columnHeader = new ColumnHeader[8]; 68 column_TextFirst = new string[8] 69 { 70 "アカウント名", 71 "キャラクター名", 72 "販売者名", 73 "取引銀行", 74 "口座番号", 75 "支店", 76 "口座名義人", 77 "連絡先" 78 }; 79 column_Width = new int[8] { 100, 100, 100, 150, 100, 100, 100, 100 }; 80 81 for (int r = 0; r < column_TextFirst.Length; r++) 82 { 83 columnHeader[r] = new ColumnHeader(); 84 columnHeader[r].Text = column_TextFirst[r]; 85 columnHeader[r].Width = column_Width[r]; 86 InstanceListView.Columns.Add(columnHeader[r]); 87 } 88 InstanceListView.HideSelection = false; 89 InstanceListView.Name = "ListViewInstance"; 90 InstanceListView.AutoSize = false; 91 InstanceListView.UseCompatibleStateImageBehavior = false; 92 InstanceListView.Size = new Size(0, 0); 93 InstanceListView.FullRowSelect = true; 94 InstanceListView.GridLines = true; 95 InstanceListView.Sorting = SortOrder.Ascending; 96 InstanceListView.View = View.Details; 97 InstancePage.Controls.Add(InstanceListView);

試したこと

Googleで調べましたところ、上記のような問題のある情報は出てきませんでした。

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

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

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

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

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

satokei

2020/10/01 13:18

「発生している問題」の文章が理解できないです。 そして、なぜカラム幅を指定しているのに、Size を 0,0 にするのでしょうか?
_string

2020/10/01 13:24

質問を読んでいただきありがとうございます。 発生している問題を要すると、カラム幅を指定してもSizeを指定しても、添付した画像のSizeを0とした上で、Sizeが広がってきます。 ですから、Sizeの基準値がおかしいです。 これを証明するためにSizeを0,0にしました。
satokei

2020/10/01 13:27

文章を直された方がよいかと。
_string

2020/10/01 13:30

文章を修正いたしました。
退会済みユーザー

退会済みユーザー

2020/10/01 15:58

こちらで提示したソースを実行した所、指定したサイズでListViewが設定されるのを確認しました。 載せていない場所のソースが影響している事はないですか?
_string

2020/10/01 16:06

影響しているか、この質問をする前に調べましたが、影響しているオブジェクトが見つからなかったため、この質問をいたしました。 自分が、考えている問題の原因は、推測ですが親のTabControlプロパティに子ListViewに影響する何かがあるということです。 ですが、そういったプロパティを私は存じ上げませんので、知っていましたらご教授いただけないでしょうか。
guest

回答1

0

自己解決

解決いたしました。

これは、初期値又は、親のプロパティを取得して子のプロパティが影響されたのかは、定かではありませんがAnchorプロパティが原因でした。
動的に生成する際にAnchorプロパティを(AnchorStyles.Top | AnchorStyles.Left)に指定すると、Sizeの基準値のバグが起きません。

投稿2020/10/02 01:07

_string

総合スコア15

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問