+ -
当前位置:首页 → 问答吧 → 请教高手关于动态给控件属性赋值问题

请教高手关于动态给控件属性赋值问题

时间:2011-12-13

来源:互联网

form窗体上有31个label控件,31个textbox。当窗体加载时,根据系统时间,31个label的text属性的值为当前月的第一天到最后一天。比如:当前时间为2011年12月12日,那么label1——label31的text属性值就是2011年12月1日——2011年12月31日,如果是2011年11月1日那么label1——label30的值就是2011年11月1日——2011年11月30日,label31禁用。

31个label控件已经提前在form窗体上放置好了,希望通过循环对他们的text属性赋值,请教高手这段代码如何写

作者: ljmy2000   发布时间: 2011-12-13

额,表示这么处理很无语。

如果非要这么搞,也没啥好办法

直接循环,然后findcontrl,然后设置text和enable

伪代码如下

datetime 月初值;
for(int i=0;i<31;i++)
{
  var obj=xxxPanel1.findContrl("laber"+i.tostring());
  if(obj!=null)
  {
  obj.visule=月初值.addDay(i).month==月初值.month
  obj.text=月初值.addDay(i).Tostring();
   
  }
  
}

作者: wanghui0380   发布时间: 2011-12-13

VB.NET code
Dim start As DateTime = DateTime.Today.AddDays(1 - DateTime.Today.Day)
Dim [end] As DateTime = start.AddMonths(1).AddDays(-1)
For i As Integer = 1 To [end].Day - 1
    For Each c As Control In Me.Controls
        If TypeOf c Is Label Then
            If c.Name = "label" & i Then
                c.Text = start.AddDays(i - 1).ToString("yyyy年MM月dd日")
                Exit For
            End If
        End If
    Next
Next
If [end].Day < 31 Then
    label31.Enabled = False
End If
If [end].Day < 30 Then
    label30.Enabled = False
End If
If [end].Day < 29 Then
    label29.Enabled = False
End If
..

作者: gxingmin   发布时间: 2011-12-13