2017-01-04 7 views
1

オープンフォームを別のフォームからリフレッシュするにはどうすればよいですか?例えばVisual Studio 2013のリフレッシュフォーム[C#]

:私は、テキストボックスに値を入力した後、ラベルがないことがわかりました

フォーム1

​​

フォーム2

Text Box (Enter value for Label and display it on label) 
Button (Sends value to Label) 

フォーム2を閉じた後で更新します。

+0

あなたは2を形成し、そのオブジェクトのプロパティとしてテキストを設定するオブジェクトを渡すことができ、フォーム1からアクセスできます。 – Jegan

答えて

1

C#Winformsの場合は、これが私のやり方です。

フォーム1:

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

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

    private void ChangeLabelText(object sender, EventArgs e) 
    { 
     string sText = sender as string; 
     label1.Text = sText; 
    } 

様式2:

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

    private void button1_Click(object sender, EventArgs e) 
    { 
     string sText = textBox1.Text; 
     ChangeLabelText(sText, null); 
    } 
} 
+0

ありがとうアーロン!私の方法もチェックできますか?私は自分の質問に答えました。 –

0

何私はこの方法を使用する場合は?何か不利な点はありますか?それともいい?

フォーム1:LABEL1の修飾子は、公開

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

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

フォーム2:

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

    private void button1_Click(object sender, EventArgs e) 
    { 
     (this.Owner as Form1).label1.Text = textBox1.Text; 
    } 
} 
+0

10人のプログラマーに何かする方法を尋ねると、10通りの方法があります。これは機能します。あなたのロジックでは、EventHandlerはもはや必要なくなり、Form2から削除できます。 – Aaron

+0

おっと、私はそれを削除することを忘れてしまった!大丈夫ですよ、アーロン! –

関連する問題