关于combobox的使用问题

沉默奋发 2007-12-28 01:21:41
在一个fram上有3个combobox,比如第一个是“年”,第二个是“月”,第三个是代表“日”
由于月份不同,“日”的天数也不同,我想让天数随年份,月份的变化而变化,这个我实现了,但是我在“日”的下拉表中选择一个后,对应的值没有显示出来,这是怎么回事?要用combobox的什么属性或方法?
事件处理代码如下:
Private Sub TimeComb_Click(Index As Integer)
Dim DayNum As Long

If (Index = 0 Or Index = 1) Then
Select Case (CInt(Me.TimeComb(1).Text))
Case 1, 3, 5, 7, 8, 10, 12
DayNum = 31
Case 4, 6, 9, 11
DayNum = 30
Case Else
If CInt(Me.TimeComb(0).Text) Mod 4 = 0 Then
If CInt(Me.TimeComb(0).Text) Mod 100 = 0 Then
DayNum = 28
End If
Else
DayNum = 29
End If
End Select
End If

ComboxVal = 1
Me.TimeComb(2).Clear

For Cnt = 1 To DayNum
Me.TimeComb(2).AddItem CStr(ComboxVal)
ComboxVal = ComboxVal + 1
Next
End Sub

请指教!
...全文
88 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
tingting1123 2007-12-28
  • 打赏
  • 举报
回复
不客气
沉默奋发 2007-12-28
  • 打赏
  • 举报
回复
谢谢你的回答
沉默奋发 2007-12-28
  • 打赏
  • 举报
回复
想自己做着试试,顺便熟悉一下VB的一些基本语句,况且如果不是做日历呢?
查了下是我代码位置的问题(我这个与style属性无多大关系,只要不是1就OK),刚才改好了
Private Sub TimeComb_Click(Index As Integer)
Dim DayNum As Long

If (Index = 0 Or Index = 1) Then
Select Case (CInt(Me.TimeComb(1).Text))
Case 1, 3, 5, 7, 8, 10, 12
DayNum = 31
Case 4, 6, 9, 11
DayNum = 30
Case Else
If CInt(Me.TimeComb(0).Text) Mod 4 = 0 Then
If CInt(Me.TimeComb(0).Text) Mod 100 = 0 Then
DayNum = 28
End If
Else
DayNum = 29
End If
End Select

Me.TimeComb(2).Clear

For Cnt = 1 To DayNum
Me.TimeComb(2).AddItem CStr(Cnt)
Next

Me.TimeComb(2).Text = "1"
‘每次事件触发时设置初始值1
End If

End Sub
tingting1123 2007-12-28
  • 打赏
  • 举报
回复
不急不急...

你干吗不用DTPicker控件呢?
沉默奋发 2007-12-28
  • 打赏
  • 举报
回复
你还真是急性子呢,呵呵
我调了下,跟我上面的代码功能是一样的,但是
你的是要前面的控件逐个逐个触发才能显示后面的列表,有什么方式可以让它一运行就出现各自的初始值呢?
比如,运行后的画面(不会贴图,^v^)
2007 1 1
tingting1123 2007-12-28
  • 打赏
  • 举报
回复
当然三个combobox的style属性都改为2 ...
tingting1123 2007-12-28
  • 打赏
  • 举报
回复
添加combobox 三个 我的代码的名字就是combo5,combo6,combo7了 年份可以自己修改下

==========
第一个忘了给combo5赋值了 ..
tingting1123 2007-12-28
  • 打赏
  • 举报
回复
Private Sub Combo5_Click()
Dim x As Integer
Combo6.Clear
Combo7.Clear
For x = 1 To 12
Combo6.AddItem x
Next x
End Sub

Private Sub Combo6_Click()
Dim j, day1, k As Integer
j = Combo6.Text
If j = 1 Or j = 3 Or j = 5 Or j = 7 Or j = 8 Or j = 10 Or j = 12 Then
day1 = 31
ElseIf j = 4 Or j = 6 Or j = 9 Or j = 11 Then
day1 = 30
ElseIf j = 2 Then
If (Val(Combo5.Text) Mod 4 = 0 And Val(Combo5.Text) Mod 100 > 0) Or Val(Combo5.Text) Mod 400 = 0 Then
day1 = 28
Else: day1 = 29
End If
End If
For k = 1 To day1
Combo7.AddItem k
Next k
End Sub

Private Sub Form_Load()
For i = 2007 To 2020
Combo5.AddItem i

Next i
End Sub
tingting1123 2007-12-28
  • 打赏
  • 举报
回复
Private Sub Combo5_Click()
Dim x As Integer
Combo6.Clear
Combo7.Clear
For x = 1 To 12
Combo6.AddItem x
Next x
End Sub

Private Sub Combo6_Click()
Dim j, day1, k As Integer
j = Combo6.Text
If j = 1 Or j = 3 Or j = 5 Or j = 7 Or j = 8 Or j = 10 Or j = 12 Then
day1 = 31
ElseIf j = 4 Or j = 6 Or j = 9 Or j = 11 Then
day1 = 30
ElseIf j = 2 Then
If (Val(Combo5.Text) Mod 4 = 0 And Val(Combo5.Text) Mod 100 > 0) Or Val(Combo5.Text) Mod 400 = 0 Then
day1 = 28
Else: day1 = 29
End If
End If
For k = 1 To day1
Combo7.AddItem k
Next k
End Sub

1,453

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧