2016-04-16 6 views
-1

"Form1"と "Form2"の2つのフォームがあります。"Form2"の "Form1"に存在するメソッド "change_lblC#の他のクラス(Windows Form)の呼び出しメソッド

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

    public void change_lbl() 
    { 
     lbl_form1.Text = "Its Done !"; 
    } 

    private void btn_gofrm2_Click(object sender, EventArgs e) 
    { 
     Form2 frm2 = new Form2(); 
     frm2.Show(); 
    } 
} 

コードのForm2::私は

コードをForm1 "Form2のは、" それが実装されていないとできない達成するために、このメソッドが呼び出さ

public partial class Form2 : Form 
{ 
    Form1 frm1 = new Form1(); 
    public Form2() 
    { 
     InitializeComponent(); 
    } 

    private void btn_form2_Click(object sender, EventArgs e) 
    { 
     frm1.change_lbl(); 
     this.Close(); 
    } 
} 
+1

'new'-EDのアップである各インスタンスは個別のIDです:Form1クラスのオープンインスタンスを持っている 。フォーム2を作成して、フォーム1を作成します。これは**別の**フォーム2を作成することができます。これは簡単な例ですか、実際には各フォームから複数のフォームを作成していますか? – OmegaMan

+0

[別のクラス(C#)からフォームコントロールにアクセスする必要があります]の重複している可能性があります(http://stackoverflow.com/questions/27658076/i-need-to-access-a-form-control-from-another-クラス-c) – khlr

答えて

2

コードが正しいとメソッドが正しく起動するだけでなく、あなたを助けるかもしれません!それを表示せずにForm1の新しいインスタンスを作成して使用していますが、アプリケーションによって使用されている現在のデフォルトインスタンスFormの変更が表示されると思われます。

Form1 myForm1=(Form1)Application.OpenForms["Form1"]; 
+0

はあなたにMehrdad、 理由をありがとう!私はたぶん、これはあまりにもあなたのためにも有効である15の評判を持っていますとき、私の票が表示されます、と述べたが、それはなりましたあなたは再び –

+0

をする!私は私が助けることがうれしいです。 –

+0

あなたの答えは私をたくさん助けたんだろうW01FSbaneアウト@ 0再び –

0

Form2EventHanderを作成すると、そのイベントをForm1に登録してください。仕事の罰金

public partial class Form2 : Form 
{ 
    public event EventHandler ButtonClicked; 
    public Form2() 
    { 
     InitializeComponent(); 
    } 

    private void btn_form2_Click(object sender, EventArgs e) 
    { 
     if(ButtonClicked != null); 
      ButtonClicked(sender, new EventArgs()); 
     this.Close(); 
    } 
} 

Form1がイベントをサブスクライブし、私はあなたがこのプロジェクトを見てみることをお勧めしますchange_lbl()

private void btn_gofrm2_Click(object sender, EventArgs e) 
{ 
    Form2 frm2 = new Form2(); 
    frm2.ButtonClicked += (se,ev) => change_lbl(); 
    frm2.Show(); 
} 
+0

ハリ・プラサードありがとうございました。これは助けて頂きますが、 upvoteをクリックしてください。 1のモーメントconverte 0、それは再び0 :(ことが判明した。私は私が推測 –

+0

が今何をしますか、あなたはアップ:-)を投票するのに十分な評判を持っていません。答えとしてマークすることしかできませんでした。 –

+0

下へコメントを追加してください。 –

1

呼んで。これはあなたの問題を解決するかもしれません。基本的にForm2を呼び出してボタン(Form2ボタンを意味します)をクリックすると、Form1はイベント、つまりForm2buttonClickedのようなイベントを 'キャプチャ'する必要があります。もっと知るにはこの記事を見てください。 http://www.codeproject.com/Articles/17371/Passing-Data-between-Windows-Forms

これはちょっと関係ないかもしれませんが、これは http://www.codeproject.com/Articles/14122/Passing-Data-Between-Forms

+0

upvoteをクリックすると "K.G aka"ありがとうございました –

+0

V LOLそしてI:1にモーメントconverte 0、しかし、それはあなたが恩恵を受けている場合は0再び:( –

+1

は、私はここに新たなんだ議決事は:(本当にがっかりです親切にそれを再度試すことが判明しました。 「それはあなたの問題W01FSbaneを解決していること嬉しい:) –

関連する問題