CHOU
[MSRDS] CCR에서 WinForm 이용해 보기 - 2 본문
이전에 RunForm 객체를 등록 시키는 방법이 아니라 WinFormsServicePort에서 제공하는 특정한 메소드들을 사용하여, WinForm 안에 등록되어 있는 메소드들을 호출하는 방법을 알아보려 합니다. 오늘도 역시 MSRDS 네이버 카페에 김영준 수석님께서 올려주신 예제를 가지고 알아보겠습니다.
이 번 예제는 별도로 추가한 폼의 색상을 변경하는 메소드와 두 개으 숫자값을 더해서 결과를 표시하는 메소드를 별도로 추가한 폼에 생성해 놓은 후, 기존 폼에서 이 메소드들을 호출하는 과정을 알아보겠습니다.
1. 먼저, 프로젝트 참조에 이전과 같이 Ccr.Adapters.Winforms.dll을 기존 Microsoft.Ccr.Core.dll 파일과 같이 추가 합니다.
그림1. 레퍼런스 추가 화면
그림2. 코드 상단에 추가화면
2. 윈폼에 버튼 1개와, 텍스트 상자 2개를 추가하고, 버튼 이벤트에 아래와 같은 코드를 추가합니다.
그림3. 윈폼 추가화면
private void button1_Click(object sender, EventArgs e)
{
Dispatcher dispatcher = new Dispatcher(0, System.Threading.ThreadPriority.Lowest, true, "11 Examples");
DispatcherQueue dq = new DispatcherQueue("DispatcherQueue", dispatcher);
//Define WInFormsServicePort
WinFormsServicePort myWinFormPort = WinFormsAdapter.Create(dq);
//Define Constructor
WinFormConstructor wc = new WinFormConstructor(
delegate()
{
return new SimpleForm();
}
);
//initialize SimpleForm
SimpleForm simpleFrm = (SimpleForm)wc.Invoke();
//Call the Methods
myWinFormPort.FormInvoke(
delegate()
{
simpleFrm.Show();
simpleFrm.AddMethod(textBox1.Text, textBox2.Text);
}
);
//Call the methods
myWinFormPort.FormInvoke(
delegate()
{
simpleFrm.ChangeColor(Color.Yellow);
}
);
}
위의 코드에서는 윈폼의 메소드들을 제어하기 위해 WinFormConstructor 객체와 WinFormsServicePort의 FormInvoke 메소드 등을 사용하였습니다.
3. 다음은 새로운 WinForm을 추가해서 버튼 1개와 텍스트 박스 1개를 추가하고 아래와 같은 코드를 추가합니다.
그림4. 윈폼 추가화면
private void button1_Click(object sender, EventArgs e)
{
System.Threading.Thread.CurrentThread.Abort();
}
public void AddMethod(String a, String b)
{
textBox1.Text = (System.Int32.Parse(a) + System.Int32.Parse(b)).ToString();
}
public void ChangeColor(Color c)
{
this.BackColor = c;
}
위의 예제를 잘 수행했다면 처음에 윈폼상자가 띄우고 텍스트 상자에 적절한 숫자값을 입력하여 버튼을 실행하면 새로운 윈폼에 결과값이 보여지게 됩니다.
아래의 영상은 위의 예제를 수행한 결과 영상 입니다.
영상1. 결과 영상
참고자료
1. http://cafe.naver.com/msrskorea
2. 예제 코드 파일