前提・実現したいこと
初心者です。ポートフォリオとして初めて簡単なアプリを作成しようとしましたが、Form1で打ち込んだデータがForm2のDataGridViewに全く飛びません・・・。
ゲッター、セッターの使い方なのか、何が問題か分からなくて悩んでいます。
コードを書き添えておくので、違う部分がありましたら教えて頂けると幸いです。
該当のソースコード
C#
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WinFormsApp1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private int borrowing = 0; private int bonus = 0; private int year = 0; private double rate = 0; public int Borrowing { get { return borrowing; } set { borrowing = value; } } public int Bonus { get { return bonus; } set { bonus = value; } } public int Year { get { return year; } set { year = value; } } public double Rate { get { return rate; } set { rate = value; } } private void TextBox1_TextChanged(object sender, EventArgs e) { borrowing = int.Parse(textBox1.Text) * 10000; } private void TextBox2_TextChanged(object sender, EventArgs e) { bonus = int.Parse(textBox2.Text); } private void ComboBox1_SelectedIndexChanged(object sender, EventArgs e) { year = Convert.ToInt32(comboBox1.SelectedItem); } private void RadioButton1_CheckedChanged(object sender, EventArgs e) { //(int)((borrowing * rate / 12) * Math.Pow(1 + rate / 12, year * 12)) / Math.Pow( 1 + rate / 12, year * 12) - 1; } private void RadioButton2_CheckedChanged(object sender, EventArgs e) { } private void TextBox3_TextChanged(object sender, EventArgs e) { rate = double.Parse(textBox3.Text) *0.01; } private void Button1_Click(object sender, EventArgs e) { if(radioButton1.Checked == true) { Form2 fm2 = new Form2(); fm2.Show(); } else if (radioButton2.Checked == true) { Form2 fm2 = new Form2(); fm2.Show(); } } } } using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace WinFormsApp1 { public partial class Form2 : Form { public Form2() { InitializeComponent(); this.Text = "住宅ローン早見表"; DateTime dt = DateTime.Now; label2.Text = dt.ToString("D"); // DataGridViewの初期値を設定 Set_init_gridview(); } public Form1 fm = new Form1(); private void Set_init_gridview() { dataGridView1.Rows.Add(fm.Borrowing.ToString()); } } }
試したこと
昨日から手を変えてつきっきりなのですがうまくいきません・・・。
補足情報(FW/ツールのバージョンなど)
visualstudio2019です。
> Form1で打ち込んだデータがForm2のgridviewに全く飛びません
どのような経緯を経てデータが「飛ぶ」という想定でおられるのか?
その経緯に相当する実装はそのコード内のどの部分なのか?
まずそのあたりの説明が必要でしょう.

>Form2の一番下の dataGridView1.Rows.Add(fm.Borrowing.ToString());の方に
Form1のBorrowingの入力が入れられないかということです。
どう質問したら良いかも分からず申し訳ありません。
すでに回答が付いていますが,まずは「インスタンス」という概念を把握すべきであろうと見受けます.
「クラス」と「インスタンス」の違い とかそのあたりから.

おっしゃる通りです。ありがとうございます。
間違ってますよね?
×: gridview
〇: DataGridView
質問を編集して訂正してください。こういうのホントにダメです。これを見た閲覧者・回答者はどう思うか考えましょう。

もし問題が解決したのであれば、ベストアンサーを選択して質問をクローズしてください。

ご指摘頂きありがとうございます。不適切な表現で申し訳ありません。修正致しました。
タイトルは直したようですが、本文の、
> Form2のgridviewに全く飛びません・・・。
が直ってません。
で、退会。

本当に本何冊も読んでるなら、インスタンスが判らないって事は無いと思うんですけどね。
ゆとり教育の成果というやつでしょうか・・・ でも、間違いと指摘されたところは素直に直す度量はお持ちのようですから、もうちょっと頑張ってみてはと思うのですが。
この件はかなり頻出の話題なので、裏を返すと初心の方にはクラス、インスタンスの違いがなかなか実感として分からないのかなと思えます。それにしても私を含めて回答者だって間違えることはあるのだから、本質問者さんに限らず退会しなくても良いのに、と思います。指摘にちゃんと応じて、次から気を付ければいいだけ。
まだ回答がついていません
会員登録して回答してみよう