電子書籍の厳選無料作品が豊富!

Visual Studio 2005 のC#でプログラミングをしているのですが、
Form1で作成した、インスタンスを別のフォーム(たとえばForm2)で使う方法がわかりません。
まだ、自分はプログラム歴が浅いですが、よければ御回答をお願いします。

A 回答 (3件)

> Form1 "から" 作成したインスタンスを...


のように,読み間違えて回答してしまいました...
こちらこそ,すみません...


//-------------------------------------------------------
No.1 の補足を見る限りほとんどわかっているように思いますが,気のせいですか?w
補足のように使う方法としては,このみっつではないでしょうか?

1. No.2 の POTATO_XP さんのように Form2 のコンストラクタやプロパティで Form1 を渡し,メンバとして保持して使う
2. 関数の引数として渡して使う
3. 関数のスコープ内で Form1 を生成して使う

その他,car をそのまま渡すというのもありです.
form1 を渡すべきか,car を渡すべきかは設計によりますのでお好みで.

//-------------------------------------------------------
また,public メンバとして保持してメンバにアクセスするよりも,priate メンバとして保持してプロパティを使ってアクセスする方が一般的なので,もしもやってなかったら試してみて下さい.
上記の 3. の例と合わせると以下のような感じです.(↓)

class Car
{ /* Car の定義 */ }

class Form1 : Form
{
  private Car car = new Car();
  public Car Car
  {
    get{ return car; }
    set{ car = value; }
  }  
}

class Form2 : Form
{
  public void Hoge()
  {
    Form1 form1 = new Form1();
    form1.Car;  // これを右辺にすれば,form1 の car を取得できます
  }
}

この回答への補足

はう><こんなにいろんな回答方法を書いていただいたのに、なにひとつ理解できないとはわ・・・。
一応自分なりに、こういうことかな?と理解してみたことを書くと
1・・・
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace tesuto
{
  public partial class Form1 : Form
  {
    public class Car
    {
    }

    private void pictureBox_DoubleClick(object sender,     EventArgs e)
    {
      Car bike = new Car();
      Form2 fm2 = new Form2(this);
      fm2.Show();
    }
  }

  public partial class Form2 : Form
  {
    public Form2(Form1 fm)
    {
      fm.bike;//こんな感じ?残念ながらエラーがでてしまいま          //すが><
    }
  }
}

2・・・
staticのCar型の変数を関数のなかで宣言して(C#では関数の中でstatic型の変数を宣言できなかった・・・Cではできたのに><)代入して、もう一度よびだされたら渡すような処理を書く?ってことですかね・・。
ごめんなさい、いまいち理解できてません><
3・・・右辺にする?
Car.carこんな感じの意味ですか?

補足日時:2008/05/09 15:22
    • good
    • 0

Form1の参照用の変数をForm2に持たせておき、Form2の引数付きコンストラクタにForm1の実体を渡し登録する。

通常のクラスと同じなのでパブリックメンバにはアクセス可能なのでは?最も単純なやり方です。

この回答への補足

Form1でこのように渡して
Form2 fm2 = new Form2(this);
Form2で
public Form2(Form1 fm)
{
  fm.bike;//こんな感じ?残念ながらエラーがでてしまいますが><
}
こういうかんじのいみですか?

自分のクラスの理解が半端だからいまいち理解できないのかな><

補足日時:2008/05/09 16:04
    • good
    • 0

参考 URL のサイトの、"Form デザイン" 内の以下の項目見てみて下さい。



・Form の表示
・Form のダイアログ表示

これで Form1 から Form2 を表示することができます。

参考URL:http://homepage3.nifty.com/midori_no_bike/CS/

この回答への補足

もうしわけありません。どうやら僕の質問の仕方がわるかったようです。
自分がしたいことはソースコードで説明すると
フォーム1のコード
namespace tesuto
{
public partial class Form1 : Form
{
car_class car = new car_class();/*ここで作ったインスタンスを*/
  }
}

ここからはフォーム2のコード
namespace tesuto
{
public partial class Form2 : Form
{
Form1.car;/*なんかこんな感じで別のフォームで使いたい*/
}
}

ということです。

ですが、また別に、こういうサイトを自分はさがしていたのでとても助かりました^^。ありがとうございます。

補足日時:2008/05/08 13:21
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!