2009-05-06 17 views

答えて

0

formBがformAで初期化されていると仮定して、Texbox1を送信するformBのコンストラクタに文字列を追加することをお勧めします。

class formB: Form{ 
    private string data; 
    public formB(string data) 
    { 
     InitializeComponent(); 
     this.data = data; 
    } 
    //rest of your code for the class 

} 
2

プロパティを1つのフォームで公開し、別のフォームから呼び出すことができます。もちろん、form1のインスタンスを取得するいくつかの方法が必要になります。プログラムクラスやその他の親クラスの静的プロパティとして保持することができます。通常この場合、私はインスタンスを保持する静的アプリケーションクラスを持っています。

public static class Application 
{ 
public static MyForm MyFormInstance { get; set; } 
} 

次に、最初のフォームを起動するときに、アプリケーションMyFormInstanceプロパティを最初のフォームのインスタンスに設定します。

MyForm instance = new MyForm(); 
Application.MyFormInstance = instance; 

2番目のフォームにプロパティを追加します。

public String MyText 
{ get { return textbox1.Text; } 
    set { textbox1.Text = value; } 
} 

そしてあなたとあなたの第二のフォームからアクセスすることができます:あなたはプロパティまたはテキストを返すメソッドのいずれかを露出させ、データを必要とするテキストボックスを持つフォームで

Application.MyFormInstance.MyText 
+1

わかりのように、テキスト

は、より簡単な方法は、あなたがそれを直接アクセスすることができ、パブリックとしてテキストボックスのモディファイアプロパティをマークするだろうが、あなたはまだ、インスタンスを取得する方法が必要になります。 –

1

。 IE:

internal string TextBoxTest 
{ 
    get{ return this.textBox1.Text;} 
} 
+0

どうすれば元のメソッドを実行したいフォームからそのメソッドを呼び出すことができますか? – Goober

0

これを行わないでください。

長いバージョン:あなたのビューが別のビューと直接対話しているのはなぜですか?

はるかに長いバージョン:

むしろフィールドを公開するパブリックプロパティを作るよりも、興味のある分野を持つ形だったデータオブジェクトのいくつかのフォーム、と相互作用している場合、それは変化から、より良いカプセル化と絶縁を提供します興味のある方法に渡されます。

興味のある方法の場所は注意深く考慮する必要があります - ビューの側面(あなたの場合はWinForm)を制御するならば、そのクラスのメンバーになるかもしれません - もしそうでなければ、データオブジェクト?

1

同様の投稿は以下here

ビデオは2つの形態の間でデータを渡すことについてのあなたの概念の多くを解消しますがあります。パラメータを使用してhttp://windowsclient.net/learn/video.aspx?v=108089

  • FormToForm - - http://windowsclient.net/learn/video.aspx?v=105861

  • 2つのフォーム間でデータを渡すために、複数の方法がありますが、プロパティを使用して、この

    • FormToFormを行うには例のビデオを持っているこれらのリンクをチェック

      HTH

    関連する問題