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

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

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

Re[1]: C# 画面間のデータ受け渡し


(過去ログ 68 を表示中)

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

■39405 / inTopicNo.1)  C# 画面間のデータ受け渡し
  
□投稿者/ 通りすがりの技術者 (1回)-(2009/08/07(Fri) 10:08:46)

分類:[.NET 全般] 

はじめまして。ご指導願います。

Form1で値をセットし、Form2で値を取得する方法を指導願います。

ソースは下記のとおりです。
<Share>
public class Share
{
private string strId;

public Share()
{
}

public string gblId
{
get
{
return strId;
}
set
{
strId = value;
}
}
}

<Form1>

private void btnLogin_Click(object sender, EventArgs e)
{
Share shr = new Share(); //インスタンスの生成
shr.gblId = "aaa"; // 名前プロパティの設定

//メインメニューに画面遷移する
Form2 frm = new Form2();
frm.Show();

//自画面閉じる
this.Hide();
}
}

<Form2>
private void MainMenu_Load(object sender, EventArgs e)
{
ここで、Form1でsetした"aaa"を取得したい。

}

Form2でshareクラスをインスタンス化してから値を取得しようとしたらnullでした。

ご指導お願いします。
引用返信 編集キー/
■39411 / inTopicNo.2)  Re[1]: C# 画面間のデータ受け渡し
□投稿者/ kazuto (12回)-(2009/08/07(Fri) 11:27:08)
kazuto さんの Web サイト
こんにちは。

一度『クラス・オブジェクト・インスタンス』辺りを調べる事をお勧めします。

-----------------------------------------------------------------------
Share shr1 = new Share();
shr1.gblId = "aaa";
Share shr2 = new Share();
shr2.gblId = "bbb";

Console.WriteLine(shr1.gblId);
Console.WriteLine(shr2.gblId);
-----------------------------------------------------------------------

上記で結果が異なるのと同様に、Form1で使用しているShareオブジェクトとForm2で使用しているShareオブジェクトは異なるインスタンスだからです。

引用返信 編集キー/
■39413 / inTopicNo.3)  Re[1]: C# 画面間のデータ受け渡し
□投稿者/ ぽぴ王子 (449回)-(2009/08/07(Fri) 11:30:59)
ぽぴ王子 さんの Web サイト
No39405 (通りすがりの技術者 さん) に返信

> Form2でshareクラスをインスタンス化してから値を取得しようとしたらnullでした。

Form2 で作った share クラスは Form1 で作った share クラスとは別のインスタンスになるので、値は取得できないですね。
Form2 に Share クラス型のプロパティを用意して、Form1 から Form2 に渡すのが素直な方法かもしれません。
(必要なものが gblId だけであれば、Share クラスではなく string 型でもいいと思いますが)
引用返信 編集キー/
■39414 / inTopicNo.4)  Re[1]: C# 画面間のデータ受け渡し
□投稿者/ オショウ (296回)-(2009/08/07(Fri) 11:31:17)
No39405 (通りすがりの技術者 さん) に返信
> はじめまして。ご指導願います。
>
> Form1で値をセットし、Form2で値を取得する方法を指導願います。

  .Tag使って渡すだけなら簡単ですが・・・

> Form2 frm = new Form2();
> frm.Show();

using(Form2 objForm = new Form2()){
objForm.Tag = (Object)"aaa";
objForm.ShowDialog ();
}

  で、

private void Form2_Load(object sender, EventArgs e)
{
String sz;

sz = (String)this.Tag;
}

  としたら如何?

以上。
引用返信 編集キー/
■39415 / inTopicNo.5)  Re[2]: C# 画面間のデータ受け渡し
□投稿者/ すがり (68回)-(2009/08/07(Fri) 11:39:21)
<Share>
    public class Share {
        public string strId { get; set; }
        public string gblId { get; set; }
    }

<Form1>
        private void btnLogin_Click(object sender, EventArgs e) {
            Share shr = new Share();
            shr.gblId = "aaa";
            Form2 frm = new Form2();
            frm.share = shr;
            frm.Show();
            this.Hide();
        }

<Form2>
    public partial class Form2 : Form {

        public Share share { get; set; }

        public Form2() {
            InitializeComponent();
        }

        private void Form2_Load(object sender, EventArgs e) {
            MessageBox.Show(share.gblId);
        }
    }

こんなかんじでー

引用返信 編集キー/
■39445 / inTopicNo.6)  Re[1]: C# 画面間のデータ受け渡し
□投稿者/ Jitta on the way (375回)-(2009/08/07(Fri) 18:22:56)
No39405 (通りすがりの技術者 さん) に返信

http://blogs.wankuma.com/jitta/articles/54305.aspx
こんな感じで〜
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -