둘다 MSDN에서 구해온 것임을 알립니다.(출처 : www.msdn.com)

먼저

C#용...
private void SetText(string text)
{
// InvokeRequired required compares the thread ID of the
// calling thread to the thread ID of the creating thread.
// If these threads are different, it returns true.
if (this.textBox1.InvokeRequired)
{
    SetTextCallback d = new SetTextCallback(SetText);
    this.Invoke(d, new object[] { text });
}
else
{
    this.textBox1.Text = text;
}
}

WPF용.
void SetTextdele(string str)
{
	if(this.Dispatcher.Thread != Thread.CurrentThread)
	{
		ts = new TextSet(SetTextdele);
		Dispatcher.Invoke(ts, str);
	}
	else
	{
		this.label1.Content = str;
	}
}
by 변경안대나 뽀씰 2009.01.02 11:26

일단 여러가지의 방법이 있다...

1) Owner 속성이용.
Form1에서 Form2를 만든다고 가정한다면..

Form1
{
Form2 f2 = new Form2();
f2.Owner = this;
f2.Show();
}
이런식으로 해준다면 이제 Owner속성을 이용해 언제든 폼간의 데이터를 전달 할 수 있다.

Form2
{
Form1 f1 = (Form1)this.Owner;
f1.(public한 멤버변수나 멤버메소드 접근가능)
}

2)delegate이용.
namespace나 광역Form에 public delegate를 선언한다.

namespace
{
public delegate SetText(string str);
}

Form1
{
SetText st = new SetText(연결할 메소드);
Form2 f2 = new Form2(st);
f2.Owner = this;
f2.Show();
}

Form2(SetText _st)
{
SetText st = _st
st();
}
요런식으로 해준다면 완료...

다음 public static 이용방법이나.. 그리 권하고 싶진 않다.

public static Form1 f1 = this; 후

Form1.f1.(public 한 멤버변수나 메소드)
by 변경안대나 뽀씰 2009.01.02 11:10