2010-01-20 7 views
1

양식에 14 개의 명령 단추가 있습니다. 내가하고 싶은 일은 현재 날짜를 기준으로 양식의 텍스트를 변경하는 것입니다. button1은 오늘 날짜 여야합니다. button2에는 tommorows 날짜가 있어야합니다. button3에는 내일 이후 날짜가 있어야합니다. 나는 이것을 14 개의 버튼으로 원한다.런타임시 명령 단추에 텍스트 추가

각 button.text를 각 날짜에 할당하여 수동으로 수행 할 수 있습니다. 루프를 사용하여 수동으로 수행 할 수 있습니다. 그것이 가능합니다. 내 단추의 이름은 button1, button2, button3, button4 등이며 14 번 유료 단추입니다. 그리고 원하는 텍스트는 현재 날짜에서 14 일 후입니다 ... basiocally 버튼을 클릭하면 이 가능합니다. visual studio 및 vb.net을 사용합니다.

+0

제 응답은 14와 관련이 없습니다. – JonH

+1

그건 한 의견입니다. – dbasnett

답변

1

이 같은 것을 시도

Dim dateVal As DateTime = DateTime.Today 
For i As Integer = 1 To 14 
    Dim but As Control = Controls("button" & i) 
    but.Text = dateVal.ToString("dd MMM yyyy") 
    dateVal = dateVal.AddDays(1) 
Next 
+0

14 개의 버튼이 있기 때문에 <= 14로 확인할 필요는 없습니다. 이미 버튼이 있는지 확인 중입니다. 자세한 내용은 내 대답을 참조하십시오. – JonH

+0

내가 알기는하지만 OP에는 이름이 알려진 14 개의 버튼 만 있습니다. * 이상을 복잡하게하는 이유는 무엇입니까? * –

+0

회신 할 때 나의 정책은 주장하기가 아닙니다. OP는 14 개 이상의 버튼을 가질 수도 있고 가지지 않을 수도 있으며 버튼으로 시작하는 버튼이 아닌 컨트롤을 가질 수도 있고 그렇지 않을 수도 있습니다. – dbasnett

1
For Each b As Control In Me.Controls 
    If TypeOf b Is Button Then 
     Dim i As Integer = CInt(b.Name.Replace("Button", "")) 
     If i <= 14 Then 
      Dim d As DateTime = DateTime.Now.AddDays(i - 1) 
      b.Text = d.ToString("dd MMM yyyy") 
      d = d.AddDays(1) 
     End If 
    End If 
Next 

코드를 load 이벤트에 삽입하십시오.

+0

14 개의 버튼 만 있으므로 <= 14로 확인할 필요가 없습니다. 이미 버튼이 있는지 확인 중입니다. 자세한 내용은 내 대답을 참조하십시오. – JonH

+1

@JonH 정중하게 두 가지 이유에 동의하지 않습니다. 1. 구체적인 것은 좋은 습관입니다. 나중에 더 많은 버튼이 추가되는 경우 명시된 버튼을 명시 적으로 포함합니다. 2. 답변에서이 부분을 다루지 못하면 다른 사람이 "버튼이 더 필요한 경우를 대비하여 제한해야한다고"말했을 것입니다. :) –

+0

그들에 일 14 버튼과 모든 애플 리케이션은 바보 같은데, 두 수표를 제공하는 것은 모든 것을 더 복잡하게 만듭니다. 더 많은 버튼이 추가 되더라도 더 이상 작동하지 않습니다. – JonH

0

폼의 컨트롤 컬렉션을 반복 할 수 있으며 컨트롤 종류가 단추 인 경우 해당 규칙 주위에 몇 가지 규칙을 코딩 할 수 있습니다.

-1
Private Sub ApplyDateLabelsToButtons() 

    Dim tmpDate As Date = DateTime.Today 

    For i As Integer = 1 To 14 
     Me.Controls("Button" & i.ToString()).Text = tmpDate.ToShortDateString() 
     tmpDate = DateAdd(DateInterval.Day, 1, tmpDate) 
    Next 

End Sub 
+0

첫 날에 하루를 추가하면이 작업이 올바르지 않습니다. 자세한 내용은 내 대답을 참조하십시오. – JonH

+0

@ 존 : 그거 확실한가요? –

+0

날짜 코드가 정상적으로 보입니다. – dbasnett

-1

뭔가를 시도 할 수 :

나는 C#에서 쓴 : 다음

private void Form1_Load(object sender, EventArgs e) 
     { 
      int v = 0; 

      foreach(Control myBtn in this.Controls) 
       if (myBtn is Button) 
       { 
        myBtn.Text = DateTime.Today.AddDays(v).ToString(); 
        v++; 
       } 
     } 

을 생각 나게했다 당신이 VB에서 필요합니다. net이므로 여기 VB.net에 있습니다 :

Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) 
    Dim v As Integer = 0 

    For Each myBtn As Control In Me.Controls 
     If TypeOf myBtn Is Button Then 
      myBtn.Text = DateTime.Today.AddDays(v).ToString() 
      v += 1 
     End If 
    Next 
End Sub 
+0

태그 VB.net 말한다. 사용해보십시오. http://www.developerfusion.com/tools/convert/csharp-to-vb/ –

+0

감사합니다. (15 문자) – JonH

+0

이 솔루션은 날짜 순서가 컬렉션의 "숫자"와 일치하도록 어떻게 보장합니까? –

관련 문제