2013-07-31 3 views
2

VB.NET에서 컨트롤에 대한 변수를 생성하면 어떤 이점이 있는지 알 수 있습니까? 예를 들어UI 컨트롤에 값을 별도의 변수로 저장 하시겠습니까?

:

  1. textBox.Text를 사용하여 액세스 TextBox 값.

  2. TextBox의 값을 저장할 변수를 선언합니다. 그런 다음 변수를 통해 값에 액세스합니다.

어떤 접근 방식이 더 좋고 유연합니까?

+0

'TextBox.Tag' 속성을 사용합니다. – 0699

+0

@ 0699 : 가능한 접근법. 일반적으로 유지 보수 중에는 문제가 발생합니다. 특히 원래 코더가 아닌 다른 사람이 유지 보수를 맡을 때 더욱 그렇습니다. 'Tag' 속성은 사전 정의 된 고정 된 의미가 없으며 모든 용도로 사용할 수 있습니다. 그래서 코드를 보게 될 사람은 타입 캐스트와 컨텍스트에서'Tag'가 사용되었을 수도있는 것을 추측해야합니다. 유사한 접근법은 예를 들어, 'TextBox'를 사용하고 이름이 다소 자명 한 제대로 입력 된 단일 목적 속성을 추가하십시오. – stakx

답변

1

두 가지 방법 모두 작동합니다. 나는 개별적으로 후자의 시나리오 (개별 변수)를 사용하는 경향이 있습니다. TextBox과 같은 컨트롤을 비즈니스 데이터를 보유하는 하나의 위치로 사용하는 사람들이 싫증납니다. 이것은 실제로 값을 구문 분석 (문자열 표현을 다시 객체로 변환)하거나 구문을 표시 (객체를 문자열 표현으로 변환) 할 때마다 값을 구문 분석해야만 실제로 문제가됩니다. 이 경우 컨트롤과 별도로 실제 값을 저장하기로 결정하므로 모든 구문 분석 및 형식 지정 논리를 코드베이스 전체에서 반복하지 않고도 한 곳으로 집중시킬 수 있습니다.

반면에 값을 별도의 변수에 저장하면 해당 변수를 컨트롤과 동기화 할 필요가 생깁니다. 그건 정확히 Data Binding이 좋은 것입니다. 나는 당신의 질문이 데이터 바인딩이 다소 제한적인 (그러나 종종 충분하다) Windows Forms에 대한 것이라고 가정하고있다. 그러나 UI가 WPF 또는 Silverlight를 기반으로하는 경우 데이터 바인딩은 훨씬 강력합니다 (예 : IValueConverter을 통해 자동으로 구문 분석/형식화 할 수 있음). 이로 인해 많은 문제를 줄일 수 있습니다. (데이터 바인딩이 너무 복잡하다면, 수동으로 항상 같은 작업을 수행 할 수 있지만, 많은 수의 …Changed 이벤트를 구독하게됩니다.)

+0

설명 해주셔서 감사합니다, stakx, 나는 그것에 감각을 가지고 있다고 생각합니다. 예를 들어, TextBox.Text를 통해 가져 오는 모든 값은 값을 계산에 사용해야하는 경우 변환을 수행해야한다는 것을 의미하는 문자열에 속합니다. 그러나 변수를 사용하여 TextChanged 이벤트와 같은 이벤트를 사용하여 값을 특정 형식으로 구문 분석하고 계산 목적으로 텍스트가 변경 될 때마다 변수를 업데이트 할 수 있습니다. 따라서 미래에 계산을해야 할 때 TextBox.Text를 숫자로 다시 변환하는 대신 변수를 사용해야합니다. –

관련 문제