前提・実現したいこと
初心者です。ポートフォリオとして初めて簡単なアプリを作成しようとしましたが、Form1で打ち込んだデータがForm2のDataGridViewに全く飛びません・・・。
ゲッター、セッターの使い方なのか、何が問題か分からなくて悩んでいます。
コードを書き添えておくので、違う部分がありましたら教えて頂けると幸いです。
該当のソースコード
C#
1using System; 2using System.Collections.Generic; 3using System.ComponentModel; 4using System.Data; 5using System.Drawing; 6using System.Linq; 7using System.Text; 8using System.Threading.Tasks; 9using System.Windows.Forms; 10 11namespace WinFormsApp1 12{ 13 public partial class Form1 : Form 14 { 15 public Form1() 16 { 17 InitializeComponent(); 18 19 } 20 21 private int borrowing = 0; 22 private int bonus = 0; 23 private int year = 0; 24 private double rate = 0; 25 26 public int Borrowing 27 { 28 get { return borrowing; } 29 set { borrowing = value; } 30 } 31 32 public int Bonus 33 { 34 get { return bonus; } 35 set { bonus = value; } 36 } 37 38 public int Year 39 { 40 get { return year; } 41 set { year = value; } 42 } 43 44 public double Rate 45 { 46 get { return rate; } 47 set { rate = value; } 48 } 49 50 51 private void TextBox1_TextChanged(object sender, EventArgs e) 52 { 53 borrowing = int.Parse(textBox1.Text) * 10000; 54 } 55 56 private void TextBox2_TextChanged(object sender, EventArgs e) 57 { 58 bonus = int.Parse(textBox2.Text); 59 } 60 61 private void ComboBox1_SelectedIndexChanged(object sender, EventArgs e) 62 { 63 year = Convert.ToInt32(comboBox1.SelectedItem); 64 } 65 66 private void RadioButton1_CheckedChanged(object sender, EventArgs e) 67 { 68 //(int)((borrowing * rate / 12) * Math.Pow(1 + rate / 12, year * 12)) / Math.Pow( 1 + rate / 12, year * 12) - 1; 69 } 70 71 private void RadioButton2_CheckedChanged(object sender, EventArgs e) 72 { 73 74 } 75 76 private void TextBox3_TextChanged(object sender, EventArgs e) 77 { 78 rate = double.Parse(textBox3.Text) *0.01; 79 } 80 81 private void Button1_Click(object sender, EventArgs e) 82 { 83 if(radioButton1.Checked == true) 84 { 85 Form2 fm2 = new Form2(); 86 fm2.Show(); 87 } 88 89 else if (radioButton2.Checked == true) 90 { 91 Form2 fm2 = new Form2(); 92 fm2.Show(); 93 } 94 95 } 96 } 97} 98 99using System; 100using System.Collections.Generic; 101using System.ComponentModel; 102using System.Data; 103using System.Drawing; 104using System.Text; 105using System.Windows.Forms; 106 107namespace WinFormsApp1 108{ 109 public partial class Form2 : Form 110 { 111 public Form2() 112 { 113 InitializeComponent(); 114 115 this.Text = "住宅ローン早見表"; 116 117 DateTime dt = DateTime.Now; 118 label2.Text = dt.ToString("D"); 119 120 // DataGridViewの初期値を設定 121 Set_init_gridview(); 122 } 123 124 public Form1 fm = new Form1(); 125 126 private void Set_init_gridview() 127 { 128 dataGridView1.Rows.Add(fm.Borrowing.ToString()); 129 } 130 } 131} 132
試したこと
昨日から手を変えてつきっきりなのですがうまくいきません・・・。
補足情報(FW/ツールのバージョンなど)
visualstudio2019です。
> Form1で打ち込んだデータがForm2のgridviewに全く飛びません
どのような経緯を経てデータが「飛ぶ」という想定でおられるのか?
その経緯に相当する実装はそのコード内のどの部分なのか?
まずそのあたりの説明が必要でしょう.
>Form2の一番下の dataGridView1.Rows.Add(fm.Borrowing.ToString());の方に
Form1のBorrowingの入力が入れられないかということです。
どう質問したら良いかも分からず申し訳ありません。
すでに回答が付いていますが,まずは「インスタンス」という概念を把握すべきであろうと見受けます.
「クラス」と「インスタンス」の違い とかそのあたりから.
おっしゃる通りです。ありがとうございます。
間違ってますよね?
×: gridview
〇: DataGridView
質問を編集して訂正してください。こういうのホントにダメです。これを見た閲覧者・回答者はどう思うか考えましょう。
もし問題が解決したのであれば、ベストアンサーを選択して質問をクローズしてください。
ご指摘頂きありがとうございます。不適切な表現で申し訳ありません。修正致しました。
タイトルは直したようですが、本文の、
> Form2のgridviewに全く飛びません・・・。
が直ってません。
で、退会。
本当に本何冊も読んでるなら、インスタンスが判らないって事は無いと思うんですけどね。
ゆとり教育の成果というやつでしょうか・・・ でも、間違いと指摘されたところは素直に直す度量はお持ちのようですから、もうちょっと頑張ってみてはと思うのですが。
この件はかなり頻出の話題なので、裏を返すと初心の方にはクラス、インスタンスの違いがなかなか実感として分からないのかなと思えます。それにしても私を含めて回答者だって間違えることはあるのだから、本質問者さんに限らず退会しなくても良いのに、と思います。指摘にちゃんと応じて、次から気を付ければいいだけ。
回答2件
あなたの回答
tips
プレビュー