【问题标题】:Adding Text to command buttons on runtime在运行时向命令按钮添加文本
【发布时间】:2010-01-20 15:07:23
【问题描述】:

我的表单上有 14 个命令按钮。我想要做的是根据当前日期更改表单的文本。 button1 应该有今天的日期。 button2 应该有明天的日期。 button3 应该有后天日期等等。我想要十四个按钮。

我可以通过将每个 button.text 分配给每个日期来手动完成...我想使用循环来完成。是否可以。 我的按钮被命名为 button1、button2、button3、button4 等收费按钮 14。 我想要的文字是从当前日期到 14 天后... 基本上想在按钮上显示日期.. 是否有可能通过一个循环。 m 使用 Visual Studio 和 vb.net

【问题讨论】:

  • 请看我的回复,因为 14 无关紧要。

标签: vb.net


【解决方案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

【讨论】:

  • 你不需要检查
  • 我同意,但 OP 只有 14 个名称已知的按钮。 为什么过于复杂?
  • 我的回复政策不是假设。 OP 可能有也可能没有超过 14 个按钮,并且可能有也可能没有不是以 Button 开头的按钮的控件。
【解决方案2】:
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

将代码放在加载事件中。

【讨论】:

  • 你不需要检查
  • @JonH 我非常不同意,原因有两个:1. 最好是具体一点,如果以后添加更多按钮,这会明确涵盖预期的命名按钮。 2.如果答案没有涵盖这一点,我很确定其他人会说“你需要限制它,以防万一存在更多按钮!” :)
  • 任何有 14 个按钮和日期的应用程序似乎都够傻了,提供两个检查会使事情变得更加复杂。即使添加了更多按钮,额外的 if 也将不再起作用。
  • 如果他说“我的表单上只有 14 个命令按钮。”我只是保持谨慎,如果 OP 只有 14 个按钮,他们可以取消选中。
【解决方案3】:

您可以循环访问表单上的控件集合,如果控件类型是按钮,您可以围绕它编写一些规则。

【讨论】:

    【解决方案4】:
    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
    

    【讨论】:

    • 这不正确,因为您要在第一天添加一天。有关更多信息,请参阅我的答案。
    • @JonH:你确定吗?
    【解决方案5】:

    试试这样的:

    我用 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 
    

    【讨论】:

    猜你喜欢
    • 2011-07-26
    • 2023-03-10
    • 2015-06-21
    • 1970-01-01
    • 2012-06-12
    • 2012-10-07
    • 2018-12-14
    • 1970-01-01
    • 2022-01-21
    相关资源
    最近更新 更多