본문 바로가기

프로그래밍 언어/C#

Control Name으로 속성을 변경하고자 하는 경우

UI에 Control들을 배치 하다 보면, 동일한 이름에 Index만 변경되는 Label, TextBox, Button등을 가져다 놓을 수 있다.

이럴 경우 하나 하나 이름을 변경해 주는 것이 엄청 힘든 작업 중에 하나이다.

Control들을 배치 할 때, 이름 순서대로 놓은 다음, 아래와 같은 형태의 코드를 사용하면 간단하게 Control들의 속성을 변경할 수 있다.

아래 예제는 Button을 찾아서 Enable/Disable을 변경하고, Text를 변경하는 예제이다.

public void Set_Enable__bt_name(String sbt_name, Boolean flag, String sbt_text)
{
	Int32 idx0;
	Int32 idx1;
	Boolean cont = true;

	for(idx0 = 0; idx0 < this.Controls.Count; idx0++)
	{
		// Panel안에 Button들을 찾는다.
		for(idx1 = 0; idx1 < this.Controls[idx0].Controls.Count; idx1++)
		{
			if(this.Controls[idx0].Controls[idx1].Name.Equals(sBtnName))
			{
				// 찾은Button의 Enabled를 설정
				this.Controls[idx0].Controls[idx1].Enabled = flag;
				this.Controls[idx0].Controls[idx1].Text = sbt_text
				cont = false;
				return;
			}
		}

		if(false == cont)
		{
			return;
		}
	}
}

 

하나의 Form안에서 나열된 Control들을 찾을 경우는 아래와 같이 단일 For-Loop를 사용하면 된다.

public void Set_Enable__bt_name(String sbt_name, Boolean flag, String sbt_text)
{
	Int32 idx0;
	Boolean cont = true;

	for(idx0 = 0; idx0 < this.Controls.Count; idx0++)
	{
		if(this.Controls[idx0].Name.Equals(sBtnName))
		{
			// 찾은Button의 Enabled를 설정
			this.Controls[idx0].Enabled = flag;
			this.Controls[idx0].Text = sbt_text
			cont = false;
			return;
		}

		if(false == cont)
		{
			return;
		}
	}
}