2012-01-05 6 views
0

私はクリアボタンusercontrolを含むフォームを持っています。 userControlにはテキストボックスとラベルがあります。親フォームからユーザーコントロールのパブリックメソッドを呼び出す

クリアボタンをクリックすると、テキストボックスのエントリがクリアされます。

私は、テキストボックスからエントリをクリアするuserControlクラスにパブリックメソッドを記述しました。

このclear()メソッドを親フォームからクリアボタンをクリックすると呼び出す方法はありますか?

答えて

0

あなたClear()方法は、この

//this method in the userControl 
public void Clear() 
{ 
    //Clear your text box 
    this.txtbox1.Text = string.Empty; 
    //Do other clean-up things if you want 
} 

のようなものでなければなりません表示されます親フォームにuserControl名を使用します(親フォームにuserControlを追加する必要があります)。ボタンイベントをクリックするとこのコードが呼び出されます

private void button1_Click(object sender, EventArgs e) 
{ 
    //Call the Clear method from the UserControl 
    yourUserControlName.Clear(); 
} 

その他の場合は、コードをご記入ください。

+0

これは私のコードと全く同じですが、変更はメインフォームに反映されません。メインフォームにはまだテキストボックスに古い値が含まれています。 –

+0

'Clear()'メソッドの後に 'this.Refresh()'を呼び出すと、 'this(Clear)()'メソッドに 'this.Refresh()'を追加することもできます。 –

+0

は、 –

0

親フォームからUserControlへのアクセス権を持っている場合は、そのPublic機能を呼び出す際に問題はありません。どのようにコードを設計したのかよく分かりませんが、必要に応じて子コントロールのPublic関数を呼び出すことができます。

逆は少し複雑ですが、そのためには代理人を使用する必要があります。

+0

publicメソッドが呼び出されていますが、変更はメインフォームで行われます –

+0

@NIleshLanke:UserControl TextBoxをクリアするためにpublic関数が実装されていませんか?なぜそれがメインフォームに起こるのか分かりません。 –

0

思ったほど簡単である場合:

は、ボタンにアクションを追加してのbutton1_Clickは

private void button1_Click(object sender, EventArgs e) 
    { 
     YourForm(); 
    } 
関連する問題