60955


C#(VisualStudio2019)にて、フォームにDataGridViewを張り付け、データバインドを  
勉強しようとほかサイト様のサンプルなどを見ながら組んでいるのですが、いざ実行させても  
DataGridViewに何も表示されません。何が原因なのか、ご指摘いただけますでしょうか。

二つのサイト様から参考にさせていただきました。

1.データセットを作ってバインド  
<http://c-loft.com/blog/?p=1375>

2.ソースからデータソースを作ってバインド  
<https://www.sejuku.net/blog/58436> (Testクラスの箇所)

ちなみに、DBのアクセスまでは現時点では検討していません。ソースレベルでの  
操作のみになります。また、きちんと後からデータ自体も追加をしています。  
データが空ということはありません。

下記がソースです

[code]

    using System;
    using System.Windows.Forms;
    
    namespace WindowsFormsApp2
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                this.dataGridView1.DataSource = this.dataSet1;
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                this.dataGridView1.DataSource = this.dataSet1;
                dataSet1.DataTable1.AddDataTable1Row("あいう", "123", DateTime.Now.ToString());
    
               dataGridView1.Columns[0].HeaderText = "教科";
                dataGridView1.Columns[1].HeaderText = "点数";
                dataGridView1.Columns[2].HeaderText = "氏名";
            }
        }
    }
    
    namespace WindowsFormsApp2
    {
        partial class Form1
        {
            /// <summary>
            /// 必要なデザイナー変数です。
            /// </summary>
            private System.ComponentModel.IContainer components = null;
    
            /// <summary>
            /// 使用中のリソースをすべてクリーンアップします。
            /// </summary>
            /// <param name="disposing">マネージド リソースを破棄する場合は true を指定し、その他の場合は false を指定します。</param>
            protected override void Dispose(bool disposing)
            {
                if (disposing && (components != null))
                {
                    components.Dispose();
                }
                base.Dispose(disposing);
            }
    
            #region Windows フォーム デザイナーで生成されたコード
    
            /// <summary>
            /// デザイナー サポートに必要なメソッドです。このメソッドの内容を
            /// コード エディターで変更しないでください。
            /// </summary>
            private void InitializeComponent()
            {
                this.components = new System.ComponentModel.Container();
                this.dataGridView1 = new System.Windows.Forms.DataGridView();
                this.dataSet1BindingSource = new System.Windows.Forms.BindingSource(this.components);
                this.dataSet1 = new WindowsFormsApp2.DataSet1();
                this.button1 = new System.Windows.Forms.Button();
                this.dataTable1BindingSource = new System.Windows.Forms.BindingSource(this.components);
                ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
                ((System.ComponentModel.ISupportInitialize)(this.dataSet1BindingSource)).BeginInit();
                ((System.ComponentModel.ISupportInitialize)(this.dataSet1)).BeginInit();
                ((System.ComponentModel.ISupportInitialize)(this.dataTable1BindingSource)).BeginInit();
                this.SuspendLayout();
                // 
                // dataGridView1
                // 
                this.dataGridView1.AutoGenerateColumns = false;
                this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
                this.dataGridView1.DataBindings.Add(new System.Windows.Forms.Binding("DataSource", this.dataTable1BindingSource, "DataColumn1", true));
                this.dataGridView1.DataSource = this.dataSet1BindingSource;
                this.dataGridView1.Dock = System.Windows.Forms.DockStyle.Fill;
                this.dataGridView1.Location = new System.Drawing.Point(0, 0);
                this.dataGridView1.Name = "dataGridView1";
                this.dataGridView1.RowHeadersWidth = 51;
                this.dataGridView1.RowTemplate.Height = 24;
                this.dataGridView1.Size = new System.Drawing.Size(800, 413);
                this.dataGridView1.TabIndex = 0;
                // 
                // dataSet1BindingSource
                // 
                this.dataSet1BindingSource.DataSource = this.dataSet1;
                this.dataSet1BindingSource.Position = 0;
                // 
                // dataSet1
                // 
                this.dataSet1.DataSetName = "DataSet1";
                this.dataSet1.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema;
                // 
                // button1
                // 
                this.button1.Dock = System.Windows.Forms.DockStyle.Bottom;
                this.button1.Location = new System.Drawing.Point(0, 413);
                this.button1.Name = "button1";
                this.button1.Size = new System.Drawing.Size(800, 37);
                this.button1.TabIndex = 1;
                this.button1.Text = "button1";
                this.button1.UseVisualStyleBackColor = true;
                this.button1.Click += new System.EventHandler(this.button1_Click);
                // 
                // dataTable1BindingSource
                // 
                this.dataTable1BindingSource.DataMember = "DataTable1";
                this.dataTable1BindingSource.DataSource = this.dataSet1;
                // 
                // Form1
                // 
                this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
                this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
                this.ClientSize = new System.Drawing.Size(800, 450);
                this.Controls.Add(this.dataGridView1);
                this.Controls.Add(this.button1);
                this.Name = "Form1";
                this.Text = "Form1";
                this.Load += new System.EventHandler(this.Form1_Load);
                ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
                ((System.ComponentModel.ISupportInitialize)(this.dataSet1BindingSource)).EndInit();
                ((System.ComponentModel.ISupportInitialize)(this.dataSet1)).EndInit();
                ((System.ComponentModel.ISupportInitialize)(this.dataTable1BindingSource)).EndInit();
                this.ResumeLayout(false);
    
            }
    
            #endregion
    
            private System.Windows.Forms.DataGridView dataGridView1;
            private System.Windows.Forms.BindingSource dataSet1BindingSource;
            private DataSet1 dataSet1;
            private System.Windows.Forms.Button button1;
            private System.Windows.Forms.BindingSource dataTable1BindingSource;
        }
    }
    
[/code]

このソースは、1の例のデータセットをデザイナ上で作成してからバインドする例です。サイト様にもありましたが、コードには手を加えないということで、DataSourceもデザイナ上で設定したのですが、それでもできなかったのでコードで設定再設定してあります。

HeeaderTextの設定は、あとから追加したのですが、ここでColumnsが0だと、例外が表示されます。

[![画像の説明をここに入力](https://i.stack.imgur.com/bkYNG.jpg)](https://i.stack.imgur.com/bkYNG.jpg)

[![画像の説明をここに入力](https://i.stack.imgur.com/T5VFl.jpg)](https://i.stack.imgur.com/T5VFl.jpg)  
よろしくお願いいたします。


CC BY-SA 4.0
2019-11-30T02:15:30.357
60952
2019-12-20T21:42:36.350
2019-12-02T08:25:27.193
76
9374
question
c# datagridview
DataGridViewにデータバインドしているのに何も表示されない


**多分原因判明**

おそらく、`Form1.Designer.cs`の`this.dataGridView1.AutoGenerateColumns =
false;`が原因です。  
これを`true`にするか、行自体を削除すれば、変化があるでしょう。  
`false`のままで行くなら、カラムを明示的に作成する必要があるのでは？

他にも、`dataSet1BindingSource`という変数は、`dataTable1BindingSource`の名前の方が正しいでしょうし、`Form1.Designer.cs`の`this.dataGridView1`各設定の中で`DataBindings`や`DataSource`があらかじめ設定されているのは、余計でしょう。

* * *

**追記ソース内容に対応**

まず、`DataSource`への設定で、指定する階層が不足しています。  
以下のように、`.DataTable1`を追加してください。

[code]

    this.dataGridView1.DataSource = this.dataSet1.DataTable1;
    
[/code]

他には、`Form1.Designer.cs`の`private void
InitializeComponent()`の中や最後の変数定義に、以下のあたりの初期化処理が必要のようですね。  
おそらく`BindingSource`関連の何か(あるいは全部)がごっそりと抜けていたのでは？

[code]

    this.dataTable1BindingSource = new System.Windows.Forms.BindingSource(this.components);
    
    this.dataSet1 = new WindowsFormsApplication1.DataSet1();
    
    ((System.ComponentModel.ISupportInitialize)(this.dataTable1BindingSource)).BeginInit();
    
    this.dataTable1BindingSource.DataMember = "DataTable1";
    this.dataTable1BindingSource.DataSource = this.dataSet1;
    
    this.dataSet1.DataSetName = "DataSet1";
    this.dataSet1.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema;
    
    ((System.ComponentModel.ISupportInitialize)(this.dataTable1BindingSource)).EndInit();
    
    private System.Windows.Forms.BindingSource dataTable1BindingSource;
    
    private DataSet1 dataSet1;
    
[/code]

`HeaderText`の設定はたたぱたさんのやり方で合っているでしょう。以下と同じですね。  
[DataGridViewのヘッダーの文字列を変更する](https://dobon.net/vb/dotnet/datagridview/headertext.html)

紹介先サンプルプロジェクトの処理を入れ替えて、`Form1.cs`の方は以下になります。  
`DataSet1.DataTable1`の各カラムの属性は`String`,`Int32`,`String`にしてあります。

[code]

    private void Form1_Load(object sender, EventArgs e)
    {
    }
    
    private void button1_Click(object sender, EventArgs e)
    {
        this.dataGridView1.DataSource = this.dataSet1.DataTable1;
    
        dataSet1.DataTable1.AddDataTable1Row("国語", 90, "田中　一郎");
        dataSet1.DataTable1.AddDataTable1Row("数学", 80, "田中　一郎");
        dataSet1.DataTable1.AddDataTable1Row("英語", 70, "田中　一郎");
        dataSet1.DataTable1.AddDataTable1Row("国語", 60, "鈴木　二郎");
        dataSet1.DataTable1.AddDataTable1Row("数学", 50, "鈴木　二郎");
        dataSet1.DataTable1.AddDataTable1Row("英語", 80, "鈴木　二郎");
        dataSet1.DataTable1.AddDataTable1Row("国語", 70, "佐藤　三郎");
        dataSet1.DataTable1.AddDataTable1Row("数学", 80, "佐藤　三郎");
        dataSet1.DataTable1.AddDataTable1Row("英語", 90, "佐藤　三郎");
    
        dataGridView1.Columns[0].HeaderText = "教科";
        dataGridView1.Columns[1].HeaderText = "点数";
        dataGridView1.Columns[2].HeaderText = "氏名";
    }
    
[/code]

結果はこうなりました。

[![AplResult2](https://i.stack.imgur.com/mi3CP.png)](https://i.stack.imgur.com/mi3CP.png)

だから、追加したDataSetの作り方や使い方になにか問題がありそうです。  
紹介先サンプルプロジェクトのまま項目名やデータ内容を変更して動作するようになってから、DataSourceを動的に設定する方法に変えるといった段階を踏むのが近道なのではないでしょうか。  
ちなみにこちらが`Form1.Designer.cs`全体です。

[code]

    namespace WindowsFormsApplication1
    {
        partial class Form1
        {
            /// <summary>
            /// 必要なデザイナー変数です。
            /// </summary>
            private System.ComponentModel.IContainer components = null;
    
            /// <summary>
            /// 使用中のリソースをすべてクリーンアップします。
            /// </summary>
            /// <param name="disposing">マネージ リソースが破棄される場合 true、破棄されない場合は false です。</param>
            protected override void Dispose(bool disposing)
            {
                if (disposing && (components != null))
                {
                    components.Dispose();
                }
                base.Dispose(disposing);
            }
    
            #region Windows フォーム デザイナーで生成されたコード
    
            /// <summary>
            /// デザイナー サポートに必要なメソッドです。このメソッドの内容を
            /// コード エディターで変更しないでください。
            /// </summary>
            private void InitializeComponent()
            {
                this.components = new System.ComponentModel.Container();
                this.dataGridView1 = new System.Windows.Forms.DataGridView();
                this.dataTableSampleBindingSource = new System.Windows.Forms.BindingSource(this.components);
                this.dataTable1BindingSource = new System.Windows.Forms.BindingSource(this.components);
                this.dataSetSample = new WindowsFormsApplication1.DataSetSample();
                this.dataSet1 = new WindowsFormsApplication1.DataSet1();
                this.button1 = new System.Windows.Forms.Button();
                ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
                ((System.ComponentModel.ISupportInitialize)(this.dataTableSampleBindingSource)).BeginInit();
                ((System.ComponentModel.ISupportInitialize)(this.dataTable1BindingSource)).BeginInit();
                ((System.ComponentModel.ISupportInitialize)(this.dataSetSample)).BeginInit();
                this.SuspendLayout();
                // 
                // dataGridView1
                // 
                this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
                this.dataGridView1.Location = new System.Drawing.Point(22, 31);
                this.dataGridView1.Name = "dataGridView1";
                this.dataGridView1.RowTemplate.Height = 21;
                this.dataGridView1.Size = new System.Drawing.Size(380, 150);
                this.dataGridView1.TabIndex = 0;
                // 
                // dataTableSampleBindingSource
                // 
                this.dataTableSampleBindingSource.DataMember = "DataTableSample";
                this.dataTableSampleBindingSource.DataSource = this.dataSetSample;
                // 
                // dataSetSample
                // 
                this.dataSetSample.DataSetName = "DataSetSample";
                this.dataSetSample.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema;
                // 
                // dataTable1BindingSource
                // 
                this.dataTable1BindingSource.DataMember = "DataTable1";
                this.dataTable1BindingSource.DataSource = this.dataSet1;
                // 
                // dataSet1
                // 
                this.dataSet1.DataSetName = "DataSet1";
                this.dataSet1.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema;
                // 
                // button1
                // 
                this.button1.Location = new System.Drawing.Point(316, 217);
                this.button1.Name = "button1";
                this.button1.Size = new System.Drawing.Size(75, 23);
                this.button1.TabIndex = 1;
                this.button1.Text = "button1";
                this.button1.UseVisualStyleBackColor = true;
                this.button1.Click += new System.EventHandler(this.button1_Click);
                // 
                // Form1
                // 
                this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
                this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
                this.ClientSize = new System.Drawing.Size(466, 262);
                this.Controls.Add(this.button1);
                this.Controls.Add(this.dataGridView1);
                this.Name = "Form1";
                this.Text = "Form1";
                this.Load += new System.EventHandler(this.Form1_Load);
                ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
                ((System.ComponentModel.ISupportInitialize)(this.dataTableSampleBindingSource)).EndInit();
                ((System.ComponentModel.ISupportInitialize)(this.dataTable1BindingSource)).EndInit();
                ((System.ComponentModel.ISupportInitialize)(this.dataSetSample)).EndInit();
                this.ResumeLayout(false);
    
            }
    
            #endregion
    
            private System.Windows.Forms.DataGridView dataGridView1;
            private System.Windows.Forms.BindingSource dataTableSampleBindingSource;
            private System.Windows.Forms.BindingSource dataTable1BindingSource;
            private DataSetSample dataSetSample;
            private DataSet1 dataSet1;
            private System.Windows.Forms.Button button1;
        }
    }
    
[/code]

* * *

**以下は質問当初内容への回答**

@たたぱた
さん自身のソースコードが提示されていないので、何がどう問題なのか、どう解決すれば良いのかを答えることは出来ないのですが、紹介記事のプロジェクトおよびソースを元に組み合わせた所では、表示出来ていると思われます。

**以後ほぼ全面改訂**  
その後、発生していそうな現象と対策についての記事を見つけました。  
[データバインディングされたデータグリッドビューの行追加について](https://social.msdn.microsoft.com/Forums/ja-
JP/b1979516-b5d8-4649-8089-c2b035b27b59/)  
[【C#】データがバインドされたDataGridViewで行を追加する](https://social.msdn.microsoft.com/Forums/vstudio/ja-
JP/f4159607-a03e-4439-999b-0927d3d15e09/)  
[(.Net)DataGridViewでバインドしたListを変更してもグリッドには反映されない?](https://jehupc.exblog.jp/12497729/)

以下3点ですね。

  * 既に表示されているデータがあるなら、それは取得してから操作する
  * `DataSource`の表示を更新する場合は、いったん`null`に設定してから更新後のデータを設定
  * `Form`の`Load`時には`DataSource`の設定は行わない

また、カラム名の指定は更新の都度行う必要があるようです。

図は左からデザイン時・起動時・button2クリック後・button3クリック後です。

[![設計・各動作結果](https://i.stack.imgur.com/DXLHz.png)](https://i.stack.imgur.com/DXLHz.png)

* * *

長いですが以下がソースになります。  
DataGridViewの名称は追加の形を取っているのでdataGridView2～dataGridView4になっています。

[code]

    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Windows.Forms;
    
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                //--DataGridViewにDataTableを関連付ける (C#)のソース--
                dataSetSample.DataTableSample.AddDataTableSampleRow("あいう", 123, DateTime.Now);
                dataSetSample.DataTableSample.AddDataTableSampleRow("ABC", 456, DateTime.Now);
                dataSetSample.DataTableSample.AddDataTableSampleRow("えお", 0, DateTime.Now);
                dataSetSample.DataTableSample.AddDataTableSampleRow("DEF", -5, DateTime.Now);
                dataSetSample.DataTableSample.AddDataTableSampleRow("かきく", 99, DateTime.Now);
    
                //--【C#入門】DataGridViewの使い方(行の追加・削除、ソートも解説)の最初のサンプルコード--
                // カラム数を指定
                dataGridView2.ColumnCount = 4;
    
                // カラム名を指定
                dataGridView2.Columns[0].HeaderText = "教科";
                dataGridView2.Columns[1].HeaderText = "点数";
                dataGridView2.Columns[2].HeaderText = "氏名";
                dataGridView2.Columns[3].HeaderText = "クラス名";
    
                // データを追加
                dataGridView2.Rows.Add("国語", 90, "田中　一郎", "A");
                dataGridView2.Rows.Add("数学", 50, "鈴木　二郎", "A");
                dataGridView2.Rows.Add("英語", 90, "佐藤　三郎", "B");
    
                //--(.Net)DataGridViewでバインドしたListを変更してもグリッドには反映されない?
                //  に従ってdataGridView3への設定はForm1_Loadでは行わない--
    
                //--【C#入門】DataGridViewの使い方(行の追加・削除、ソートも解説)の3つ目のDataTableを使う方法のサンプルコード--
                DataTable table = new DataTable("Table");
    
                // カラム名の追加
                table.Columns.Add("教科");
                table.Columns.Add("点数", Type.GetType("System.Int32"));
                table.Columns.Add("氏名");
                table.Columns.Add("クラス名");
    
                // Rows.Addメソッドを使ってデータを追加
                table.Rows.Add("国語", 90, "田中　一郎", "A");
                table.Rows.Add("数学", 50, "鈴木　二郎", "A");
                table.Rows.Add("英語", 90, "佐藤　三郎", "B");
    
                dataGridView4.DataSource = table;
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                dataSetSample.DataTableSample.AddDataTableSampleRow("くけこ", 987, DateTime.Now);
            }
    
            //--【C#入門】DataGridViewの使い方(行の追加・削除、ソートも解説)の2つ目のDataSourceの使い方のサンプルコード--
            public class Test
            {
                public string Subj { get; set; }
                public int Points { get; set; }
                public string Name { get; set; }
                public string ClassName { get; set; }
            }
            //--【C#入門】DataGridViewの使い方(行の追加・削除、ソートも解説)の2つ目のDataSourceの使い方のサンプルコード--
            public class TestList
            {
                public List<Test> Data { get; }
    
                // コンストラクタ(データ入力)
                public TestList()
                {
                    Data = new List<Test> {
                        new Test { Subj="国語", Points=90, Name="田中　一郎", ClassName="A" },
                        new Test { Subj="数学", Points=50, Name="鈴木　二郎", ClassName="A" },
                        new Test { Subj="英語", Points=90, Name="佐藤　三郎", ClassName="B" }
                    };
                }
            }
            // 追加データの定義例
            public class TestList2nd
            {
                public List<Test> Data { get; }
    
                // コンストラクタ(データ入力)
                public TestList2nd()
                {
                    Data = new List<Test> {
                        new Test { Subj="数学", Points=80, Name="田中　一郎", ClassName="A" },
                        new Test { Subj="英語", Points=70, Name="田中　一郎", ClassName="A" },
                        new Test { Subj="国語", Points=60, Name="鈴木　二郎", ClassName="A" },
                        new Test { Subj="英語", Points=80, Name="鈴木　二郎", ClassName="A" },
                        new Test { Subj="国語", Points=70, Name="佐藤　三郎", ClassName="B" },
                        new Test { Subj="数学", Points=80, Name="佐藤　三郎", ClassName="B" }
                    };
                }
            }
            // DataSourceを使った場合の初期化例
            private void button2_Click(object sender, EventArgs e)
            {
                //--【C#入門】DataGridViewの使い方(行の追加・削除、ソートも解説)の2つ目のDataSourceの使い方のサンプルコード--
                // データを追加
                TestList testlist = new TestList();
                dataGridView3.DataSource = testlist.Data;
                // カラム名を指定
                dataGridView3.Columns[0].HeaderText = "教科";
                dataGridView3.Columns[1].HeaderText = "点数";
                dataGridView3.Columns[2].HeaderText = "氏名";
                dataGridView3.Columns[3].HeaderText = "クラス名";
            }
            // DataSourceを使った場合のデータ追加例
            private void button3_Click(object sender, EventArgs e)
            {
                TestList2nd testlist2nd = new TestList2nd();
                List<Test> table = (List<Test>)dataGridView3.DataSource; // 既存データを取得
                if (table is null)
                {
                    table = testlist2nd.Data; // 既存がnullなら設定
                }
                else
                {
                    table.AddRange(testlist2nd.Data); // 1件ならAdd(),ListならAddRange()
                }
                dataGridView3.DataSource = null; // いったんDataSourceをnullにする
                dataGridView3.DataSource = table; // 追加された新しいリストを設定する
                // 再度カラム名を指定
                dataGridView3.Columns[0].HeaderText = "教科";
                dataGridView3.Columns[1].HeaderText = "点数";
                dataGridView3.Columns[2].HeaderText = "氏名";
                dataGridView3.Columns[3].HeaderText = "クラス名";
            }
        }
    }
    
[/code]


CC BY-SA 4.0
2019-11-30T04:38:54.950
60955
2019-12-02T12:41:24.117
2019-12-02T12:41:24.117
26370
26370
60952
answer


横から失礼いたします。  
DataGridView の AutoGenerateColumns がfalseになるタイミングですが、  
AutoGenerateColumns の初期値はTrue、  
デザイナーで DataGridView に DataSource を設定したタイミングで  
`AutoGenerateColumns=false`の記述が Designer.cs の方に追加されるようです。  
以下MSの公式サイトでも記述があり、私も試してみて確認しました。  
(Visual Studio 2019 ver16.4)

[DataGridView.AutoGenerateColumns プロパティ](https://docs.microsoft.com/ja-
jp/dotnet/api/system.windows.forms.datagridview.autogeneratecolumns?view=netframework-4.8)

> Windows フォームデザイナーの DataSource を設定すると、AutoGenerateColumns プロパティが false
> に自動的に設定され、データソース内の各プロパティの列を追加およびバインドするためのコードが生成されます。

  1. デザイナーで DataGridView をFormに追加
  2. デザイナーで DataSource を設定せず、コードで DataSource をバインド

の流れであれば、AutoGenerateColumns はTrueのままになると思います。  
ご参考になりましたら幸いです。


CC BY-SA 4.0
2019-12-20T21:42:36.350
61628
2019-12-20T21:42:36.350
37146
60952
answer