2010-01-20 65 views
1

我在窗體上有14個命令按鈕。我想要做的是根據當前日期更改表格的文本。 button1應該有今天的日期。 button2應該有tommorows日期。 button3應該在明天約會之後有一天等等。我想要十四個按鈕。在運行時向命令按鈕添加文本

我可以通過爲每個日期分配每個button.text來手動完成...我想用循環來完成它。可能嗎。 我的按鈕被命名爲button1,button2,button3,button4等收費按鈕14. 和我想要的文字是從當前日期到14天后... 基本上想顯示按鈕.. 是否有可能通過循環。 米用Visual Studio和vb.net

+0

看到我的回答,因爲14是無關緊要的。 – JonH 2010-01-20 15:33:24

+1

這是一個意見。 – dbasnett 2010-01-20 16:05:31

回答

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 2010-01-20 15:28:22

+0

我是aggree,但OP只有名稱已知的14個按鈕。 *爲什麼過於複雜?* – 2010-01-20 15:30:00

+0

我的政策回覆時不是假設。 OP可能有或沒有超過14個按鈕,並且可能有也可能沒有控件,這些控件不是以按鈕開頭的按鈕。 – dbasnett 2010-01-20 16:02:37

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 

放入加載事件的代碼。

+0

你不需要檢查<= 14,因爲他只有14個按鈕。你已經在檢查它是否有一個按鈕。查看我的答案以獲取更多信息。 – JonH 2010-01-20 15:27:37

+1

@JonH我尊敬地不同意以下兩個原因:1.具體的做法是好的做法,如果稍後添加更多的按鈕,則明確涵蓋預期的按鈕。 2.如果答案沒有涵蓋這一點,我敢肯定別人會說「你需要限制它,以防萬一有更多的按鈕存在!」 :) – 2010-01-20 15:36:22

+0

任何帶有14個按鈕的應用程序都有足夠的天氣,提供兩個檢查使得它更加複雜。即使增加了更多的按鈕,如果不再有效的話。 – JonH 2010-01-20 15:38:04

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 2010-01-20 15:29:11

+0

@JonH:你確定嗎? – 2010-01-20 18:13:06

+0

日期的代碼看起來沒問題。 – dbasnett 2010-01-20 22:31:28

-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。淨,所以這裏它在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/ – 2010-01-20 15:30:38

+0

謝謝編輯。 (15個字符) – JonH 2010-01-20 15:32:03

+0

此解決方案如何確保日期順序與集合中的按鈕「編號」相匹配? – 2010-01-20 18:15:07