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

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

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

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

Q&A

解決済

2回答

1266閲覧

C# DataGridViewに他classの変数が渡らない

退会済みユーザー

退会済みユーザー

総合スコア0

C#

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

0グッド

0クリップ

投稿2021/11/16 03:49

編集2021/11/16 04:51

前提・実現したいこと

初心者です。ポートフォリオとして初めて簡単なアプリを作成しようとしましたが、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です。

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

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

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

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

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

fana

2021/11/16 04:09

> Form1で打ち込んだデータがForm2のgridviewに全く飛びません どのような経緯を経てデータが「飛ぶ」という想定でおられるのか? その経緯に相当する実装はそのコード内のどの部分なのか? まずそのあたりの説明が必要でしょう.
退会済みユーザー

退会済みユーザー

2021/11/16 04:25

>Form2の一番下の dataGridView1.Rows.Add(fm.Borrowing.ToString());の方に Form1のBorrowingの入力が入れられないかということです。 どう質問したら良いかも分からず申し訳ありません。
fana

2021/11/16 04:29

すでに回答が付いていますが,まずは「インスタンス」という概念を把握すべきであろうと見受けます. 「クラス」と「インスタンス」の違い とかそのあたりから.
退会済みユーザー

退会済みユーザー

2021/11/16 04:32

おっしゃる通りです。ありがとうございます。
退会済みユーザー

退会済みユーザー

2021/11/16 04:39

間違ってますよね? ×: gridview 〇: DataGridView 質問を編集して訂正してください。こういうのホントにダメです。これを見た閲覧者・回答者はどう思うか考えましょう。
退会済みユーザー

退会済みユーザー

2021/11/16 04:44

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

退会済みユーザー

2021/11/16 04:45

ご指摘頂きありがとうございます。不適切な表現で申し訳ありません。修正致しました。
退会済みユーザー

退会済みユーザー

2021/11/16 04:45

タイトルは直したようですが、本文の、 > Form2のgridviewに全く飛びません・・・。 が直ってません。
dodox86

2021/11/16 05:06

で、退会。
退会済みユーザー

退会済みユーザー

2021/11/16 05:17

本当に本何冊も読んでるなら、インスタンスが判らないって事は無いと思うんですけどね。
退会済みユーザー

退会済みユーザー

2021/11/16 05:28 編集

ゆとり教育の成果というやつでしょうか・・・ でも、間違いと指摘されたところは素直に直す度量はお持ちのようですから、もうちょっと頑張ってみてはと思うのですが。
dodox86

2021/11/16 05:29

この件はかなり頻出の話題なので、裏を返すと初心の方にはクラス、インスタンスの違いがなかなか実感として分からないのかなと思えます。それにしても私を含めて回答者だって間違えることはあるのだから、本質問者さんに限らず退会しなくても良いのに、と思います。指摘にちゃんと応じて、次から気を付ければいいだけ。
guest

回答2

0

コードを見る限り、Form1のButton1_ClickでForm2を表示する際に、Form1からForm2へ何も渡しているように見えないのですが。
Form2内でForm1のインスタンスを作成しているようですが、Form2を呼び出したForm1のインスタンスとは違うので、Borrowingにアクセスしたところで何も得られないでしょう。呼び出し元のForm1のインスタンスを渡してあげればよいのでは?

cs

1 Form2 fm2 = new Form2(); 2 fm2.fm = this; 3 fm2.Show();

C#の基礎の話になるので、MicrosoftのC#のチュートリアルやドキュメントで勉強したり、とりあえず入門書でも一冊買って一通り基礎を勉強した方がよいと思います。このレベルで質問していると、今後何十回と質問する事になると思われますのでキリがないです。

投稿2021/11/16 04:16

編集2021/11/16 04:34
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2021/11/16 04:38

何冊も読んで勉強してるのですが、始めてアプリ作る段になって力不足を認識してます。 お手数おかけし申し訳ありませんでした。ありがとうございました。
guest

0

ベストアンサー

public Form1 fm = new Form1();

これ、Form1を新規作成してます
すでに表示しているForm1と同じベツモノを作ってるってことです

現在あるForm1のインスタンスをいれてみよう

public Form1 fm = Form1;

投稿2021/11/16 04:14

y_waiwai

総合スコア88042

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

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

退会済みユーザー

退会済みユーザー

2021/11/16 04:49

ご丁寧なご指摘ありがとうございます。 やってみたのですがうまく動かすことができませんでした。 自力でもう少し調べてみます!
退会済みユーザー

退会済みユーザー

2021/11/16 04:57

そりゃ上のコードのままだとコンパイルエラーでしょうね。 うまく動かないのにベストアンサーとか意味不明なんですが。
dodox86

2021/11/16 05:05

> public Form1 fm = Form1; これはあんまりでしょう。「私が知らないだけ?まさか」とは思いましたがプロジェクト作って再確認してしまいました。思いっきり間違っているので低評価します。
Zuishin

2021/11/16 06:00

この回答もひどいけど、なんというか最近のプログラマーってコードを写す人のことなんですね。 今でもプログラミングする人のことをプログラマーと言うんだと思っていました。 認識を改めなきゃいけませんね。
Zuishin

2021/11/16 14:15

こう書くとすぐ嫌がらせの低評価するやつがいる。 心当たりがあるんだろう。 だからお前は何年やってもダメなんだよ。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問