2011-07-06 16 views
0

フォーム1のテキストボックスをクリアするメソッドを作成しましたが、クリアできますが、このメソッドをForm2から呼び出すと、form1のテキストボックスはクリアされません。これで私を助けてください。別のフォームのコントロールを呼び出せません

フォーム1:

private void Clear_Click(object sender, EventArgs e) 
    { 
     screen_clear(); 
    } 

    public void screen_clear() 
    { 
     MessageBox.Show("Clear"); 
     textBox1.Text = ""; 
    } 

様式2:

​​

"クリア" のメッセージが表示されますForm2をから呼び出すことが、テキストボックスがクリアされていないが。

+1

どこでも 'f1.Show()'を呼び出さないので、そのコードは意味をなさない。テキストを設定している 'Form1'に' Load'イベントハンドラがありますか? 'f1.screen_clear()'を呼び出した後に呼び出すことができます。 –

答えて

0

Form1 f1 = new Form1();

既存のForm1にアクセスしないで、Form1の新しいインスタンスをインスタンス化しています。

元のフォーム1にアクセスするには、元のForm1への参照をForm2に渡す必要があります。

のForm2の例では、これを追加することができます。

Form1 _masterform; 

    void SetMaster(Form MyMaster) 
    { 
     _masterform = MyMaster; 
    } 

を、後であなたがForm1.textbox1.clear()やその他もろもろを使用することができますに。

これを行う方法は他にもありますが、これは基本的な方法の1つです。

0

MessageBox.Showは静的メソッドです。つまり、1つしかないことを意味します。これはグローバルです。

Form1 f1 = new Form1();と言うとき、の新しいインスタンスがForm1に追加されました。これはあなたが探しているForm1ではありません。

0

それはあなたのコントロールは、それがpublic.SoこれはForm1の新しいインスタンスを作成します

+0

私は公開しましたが、まだ動作していません –

1
Form1 f1 = new Form1(); 

をworikingないされていないことtextBox1.May public.Checkあるので、あなたが。)(screen_clearを呼び出すことができます。これは、アプリケーションがProgram.csから作成するform1のインスタンスを実行していません。次のコードに

public partial class Form1 : Form 
{ 
    static public Form1 thisForm; 

    public Form1() 
    { 
     InitializeComponent(); 

    } 

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

    private void Form1_Load(object sender, EventArgs e) 
    { 
     thisForm = this; 
    } 
} 

このBYEを行うことができますし、Form2の中で、あなたは、これはあなたがf1.showを呼び出すことはありません

+0

ありがとうございます!その作業は絶対にうまくいっています。私は過去2週間これを取得していませんでした。あなたの大きな助けにもう一度感謝します! –

0

を役に立てば幸い

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

    private void Form2_Load(object sender, EventArgs e) 
    { 
     Textbox tb = Form1.thisForm.Controls["textbox1"] as Textbox; 
     // Now write you code here 
    } 

} 

のように、これを呼び出すことができます。 Form1 f1 = new Form1()が作成されると、フォームの新しいインスタンスがメモリに格納されます。これは、f1.screen_clear()が呼び出されるインスタンスです。

関連する問題