C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: C#でデータの受け取り方について


(過去ログ 137 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■80418 / inTopicNo.1)  C#でデータの受け取り方について
  
□投稿者/ トウモロコシ (1回)-(2016/07/16(Sat) 01:29:27)

分類:[C#] 

はじめまして

C#を勉強中ですがわからないところがあります。
3つのクラスがあります。
クラス1は、データを送信するクラスです。ボタンを配置しています
クラス2は、データを格納しておくクラスです。
クラス3は、クラス2からデータをもらって表示するクラスです。

クラス1は起動するとクラス2にデータを送ります。
クラス1にはボタンがありそれをクリックすることでクラス2のデータをクラス3のラベルに表示するプログラムです。
ですが、クラス3で表示のときに中身のない結果となります。
下記にソースコードを示すので手直しをお願いします。

クラス1:Form1
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        private WindowsApplication1.Class1 class1 = new WindowsApplication1.Class1();

        public Form1()
        {
            InitializeComponent();
            Test();
        }

        private void Test()
        {
            string name = "name1";
            class1.Name = name;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            using (WindowsApplication1.UseForm uf = new WindowsApplication1.UseForm())
            {
                uf.ShowDialog();
            }
        }
    }
}

クラス2:Class1
using System;
using System.Collections.Generic;
using System.Text;

namespace WindowsApplication1
{
    class Class1
    {
        private string classname;

        public string Name
        {
            set
            {
                classname = value;
            }
            get
            {
                return classname;
            }
        }
    }
}

クラス3:UseForm
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
    public partial class UseForm : Form
    {
        private WindowsApplication1.Class1 c1 = new WindowsApplication1.Class1();

        public UseForm()
        {
            InitializeComponent();
            label1.Text = c1.Name;
        }
    }
}

引用返信 編集キー/
■80419 / inTopicNo.2)  Re[1]: C#でデータの受け取り方について
□投稿者/ Azulean (664回)-(2016/07/16(Sat) 07:58:47)
クラス1(Form1)とクラス3(UseForm)で使っている c1 が「別のもの」だからです。

クラスは設計図で、設計図を元に new すると新しい箱(オブジェクト)ができます。
クラス1とクラス3で別々の箱を作っているので、クラス1の箱に入れた文字列は、クラス3の箱には入っていないということになります。
同じ箱を使うように、クラス3に渡してあげる必要があります。

一例として:

public partial class Form1 : Form
{
// 略
  private void button1_Click(object sender, EventArgs e)
  {
    using (WindowsApplication1.UseForm uf = new WindowsApplication1.UseForm(c1))
    {
      uf.ShowDialog();
    }
  }
}

public UseForm(WindowsApplication1.Class1 c1)
{
  InitializeComponent();
  label1.Text = c1.Name;
}


引用返信 編集キー/
■80424 / inTopicNo.3)  Re[2]: C#でデータの受け取り方について
□投稿者/ トウモロコシ (3回)-(2016/07/16(Sat) 23:25:44)
Azulean さん

ありがとうございます。
できました!
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -