2010-01-20 55 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