사용자 도구

사이트 도구

English

jcontrols_cf35:setting_properties_at_runtime

Setting Properties at Runtime

기본적으로 Visual Studio의 모든 콘트롤들은 속성이 바뀔때마다 바뀐내용을 그즉시 표시합니다. 때로는 이것이 오히려 이상한 결과를 초래하기도 합니다.

문제가 되는 상황

예를들어, PLC1)에서 읽어온 값을 화면에 표시하는 경우에, 읽어온 값이 그 즉시 콘트롤에 반영되어 아래와 같이 화면에 표시됩니다. 그리는 과정이 모두 보이게 됨으로써 오히려 혼란스러워 보입니다.

void UpdateLamp(bool isOn)
{
    // Lamp will redraw here...
    lamp.IsOn = isOn;
 
    // ...here...
    lamp.Text = lamp.IsOn ? "ON" : "OFF";
 
    // ...and here...
    lamp.Font = new Font(Font.Name, Font.Size, lamp.IsOn ? FontStyle.Bold : FontStyle.Regular);
}

해결방법

이 경우, SuspendDraw 메소드 함수를 이용해서 그리는 과정이 보이지 않도록 한뒤, 콘트롤 갱신이 모두 끝난뒤 ResumeDraw 메소드 함수를 이용해서 최종결과를 한번에 표시하도록 하면, 아래 처럼 깔끔하게 동작되는 화면을 보실 수 있습니다.

void UpdateLamp(bool isOn)
{
    lamp.SuspendDraw();
 
    // lamp will not redraw here
    lamp.IsOn = isOn;
 
    // ...or here...
    lamp.Text = lamp.IsOn ? "ON" : "OFF";
 
    // ...or here...
    lamp.Font = new Font(Font.Name, Font.Size, lamp.IsOn ? FontStyle.Bold : FontStyle.Regular);
 
    // lamp will redraw here
    lamp.ResumeDraw();
}

특히 화면이 전환된뒤, 이 방법을 사용하시면 지저분하게 콘트롤들이 표시및 배치되는 과정을 숨기고, 한번에 모든 내용을 표시하도록 할 수 있습니다.

1)
프로그래머블 로직 콘트롤러
jcontrols_cf35/setting_properties_at_runtime.txt · 마지막으로 수정됨: 2016/04/14 09:46 (바깥 편집)