2016-10-28 11 views
-1

タイトルが十分明確であることを願っています。私に説明しましょう:私はC#Winform Appをやっています。私がアプリを起動すると、フォーム1が起動し、ボタンをクリックすると他のフォームが開きます。最初のフォームから別のフォーム関数を呼び出す

問題は私が1フォームから開始する(形態2、形態3、形態4 ..)をそれらの形態での機能を有しています。

は現在、ここで私は私から私の "send_email()" 機能を開始するにはどうすればよいのForm2(textboxs、ボタン、機能など)

​​

を内のコンポーネントを持って、そして、私のコード

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    // First Event, when I click in the toolstrip menu, I open the Form2 ("Ligne3") 
    private void ligne3ToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     var Ligne3 = new Ligne3(); 
     Ligne3.Show(); 
    } 

ですForm1(たとえばLoad Event中)?

+1

var ligne3 = new Ligne3(); ligne3.send_email()? – mybirthname

+0

@mybirthnameこのソリューションは、Form2などのメール設定に設定されているパラメータを使用しません。デバッグ中にエラーがスローされます – Alex

+0

この設定をプリセットするか、メソッドシグネチャの依存関係として追加します。 – mybirthname

答えて

0

showを呼び出す前に、Form2または他のオブジェクト/変数の値をLinge3オブジェクトに割り当てます。 send_email()を呼び出す前にsend_email()に割り当てる必要がある値。以下のようなもの。

private void ligne3ToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     var ligne3 = new Ligne3(); 
     //define variables/properties in Ligne3 for all values to be passed 
     //then assign them with corresponding values 
     ligne3.Value1 = objForm2.Value1; 
     ligne3.Value2 = objForm2.Value2; 
     ligne3.Value3 = objForm2.textBox1.Text; 
     ligne3.Value3 = objForm2.checkBox1.Value; 
     //and so on 
     ligne3.send_email(); 
     ligne3.Show(); 
    } 
+0

[OK]を、しかし、テキストボックス、Form2(Ligne 3)の他の視覚的コンポーネントの存在をForm1に "知らせる"方法はありますか?私はすべての変数を割り当てましたが、Form1はフォーム2のテキストボックスを認識しません – Alex

+0

Form2のテキストボックスとチェックボックスにアクセスするコードが追加されました –

+0

OKです。どうもありがとうございました – Alex

0

あなたは2,3,4などを起動して、開いているフォームし、Form1のボタンをクリックして、それらのbtn_clickハンドラにあなたがnew Form2を、3,3,4を作成している場合。次に、それぞれのフォームへの参照を持つので、作成したばかりのインスタンスのそれぞれのpublicメソッドを呼び出すことができます。例えば

public class Form1 
{ 
    private Form2 subForm2; 

    private void OpenForm2_Click(object sender, eventargs e) 
    { 
     subForm2 = new Form2(); 
     subForm2.Show() 
    } 

    private void sendEmailBtn_Click(object sender, EventArgs e) 
    { 
     subForm2.Send_email(); 
    } 
} 

これは、設計の観点から、上記と間違って多くのことですが、私はちょうどアイデアを提示し、それを使用しています。 Form1のインスタンス化の外でForm2,3,4などのインスタンスを作成する場合は、インスタンス参照を提供するために、何らかの形式のコンストラクタまたはプロパティインジェクションが必要です。

関連する問題