2016-10-30 11 views
1

私はフォーム間で値を送信するプロジェクトに取り組んでいますが、問題が発生しました。Windowsフォーム間での値の送信

フォーム1:名前、性別および金:画像をクリックすると

public Vägval(string name, string gender, int gold) 
     { 


      InitializeComponent(); 
      ChoosePicture(gender); 
      tname.Text = name; 
      string Namn = name; 
      string Gender = gender; 
      int Gold = gold; 
      tMynt.Text = gold.ToString(); 
      tLife.Text = 5.ToString(); 
      Skattkista skatt = new Skattkista(Namn, Gender, Gold); 


     } 

私は2番目のフォームを開いて、それを三つの値を送信したいです。

private void pictureBox1_Click(object sender, EventArgs e) 
     { 
      Skattkista skatt = new Skattkista(Namn, Gender, Gold); 
      skatt.Show(); 
     } 

しかし、私はここでエラーが出ます:

名「の名称が」現在のコンテキスト内に存在しない

「性別」は現在のコンテキスト内に存在しない名前

名前「ゴールド」は現在のコンテキストに存在しません

Skattkista skatt = new Skattkista(Namn, Gender, Gold);をコンストラクタに入れてみましたが、画像がクリックされたときにフォームを開くことができません。

私が欲しいのはあなたの変数はグローバルではなく、それらを作成する方法にローカルスコープを持っている可能性があるかのように見えます新しいフォームを開き、画像が

+0

のようになります。私はしたいがあることをちょうどつもり言及よ実際に英語の言葉ではありません... – obe

答えて

2

をクリックしたときに、それを三つの値を送信することですスコープをフォーム自体に追加します。私はもっ​​とコードなしではわかりません。 1つの提案は、それぞれを与えるしようとするだろうグローバルプロパティ

public string Namn {get; set;} 
public string Gender {get; set;} 
public int Gold {get; set;} 

を形成あなたのコンストラクタは、この

public Vägval(string name, string gender, int gold) 
    { 
     InitializeComponent(); 
     ChoosePicture(gender); 

     //assigns all the properties 
     this.Namn = name; 
     this.Gender = gender; 
     this.Gold = gold; 

     //Set GUI 
     tname.Text = name; 
     tMynt.Text = gold.ToString(); 
     tLife.Text = 5.ToString(); 
    } 

Clickイベント

private void pictureBox1_Click(object sender, EventArgs e) 
    { 
     //Create new form object using Vagval properties and show it 
     Skattkista skatt = new Skattkista(this.Namn, this.Gender, this.Gold); 
     skatt.Show(); 
    } 
+0

私はそれらの公共の財産をどこに置くのですか? – Shoxxer

+0

パブリック部分クラス宣言の直後にフォームの一番上に置いてください – Joe

+0

ああ申し訳ありませんが、あなたは大文字Pでパブリックを綴りました。どうもありがとう! – Shoxxer

関連する問題