vb组合框的关联问题
有一段程序如下:可实现当comb1为星期一时,comb2,comb3可选蔬菜,要求能实现,当comb2选了“黄瓜”,comb3的下拉菜单就不能出现“黄瓜”选项,反之亦然,...
有一段程序如下:可实现当comb1为星期一时,comb2,comb3可选蔬菜,要求能实现,当comb2选了“黄瓜”,comb3的下拉菜单就不能出现“黄瓜”选项,反之亦然,如何实现?谢赐教。
Private Sub Combo1_Click()
Dim cc(20)
cc(0) = "黄瓜"
cc(1) = "南瓜"
cc(2) = "冬瓜"
cc(3) = "白菜"
cc(4) = "萝卜"
cc(5) = "豆角"
cc(6) = "西红柿"
cc(7) = "丝瓜"
cc(8) = "洋葱"
Dim i As Long
Dim cb As Object
Dim n As Long
Dim nz As Object
Select Case Combo1.Text
Case "星期一"
For i = 2 To 3
Set cb = Me.Controls("combo" & CStr(i))
cb.Clear
For j = 0 To 8
cb.AddItem cc(j)
Next j
Next
End Select
End Sub
Private Sub Form_Load()
Combo1.AddItem "星期一"
Combo1.AddItem "星期二"
End Sub
回一楼:
谢谢vlaoda,我倾向于ickaka的答案
谢谢ickaka,能否详细写出来过程呢(有8个组合框的时候)
有8个组合框,也就是说:
For i = 2 To 9
Set cb = Me.Controls("combo" & CStr(i))
都是要求其中一个选定了,其它都不能再选它了,如何做呢
再补充:不要求分上午和下午,只希望能知道增加到8个组合框的时候应该怎么做啊? 展开
Private Sub Combo1_Click()
Dim cc(20)
cc(0) = "黄瓜"
cc(1) = "南瓜"
cc(2) = "冬瓜"
cc(3) = "白菜"
cc(4) = "萝卜"
cc(5) = "豆角"
cc(6) = "西红柿"
cc(7) = "丝瓜"
cc(8) = "洋葱"
Dim i As Long
Dim cb As Object
Dim n As Long
Dim nz As Object
Select Case Combo1.Text
Case "星期一"
For i = 2 To 3
Set cb = Me.Controls("combo" & CStr(i))
cb.Clear
For j = 0 To 8
cb.AddItem cc(j)
Next j
Next
End Select
End Sub
Private Sub Form_Load()
Combo1.AddItem "星期一"
Combo1.AddItem "星期二"
End Sub
回一楼:
谢谢vlaoda,我倾向于ickaka的答案
谢谢ickaka,能否详细写出来过程呢(有8个组合框的时候)
有8个组合框,也就是说:
For i = 2 To 9
Set cb = Me.Controls("combo" & CStr(i))
都是要求其中一个选定了,其它都不能再选它了,如何做呢
再补充:不要求分上午和下午,只希望能知道增加到8个组合框的时候应该怎么做啊? 展开
2个回答
展开全部
晕头!你也说清楚点阿。
1、每天都如此要求,还是只有星期一?
2、combo2决拦乱颤定combo3,还是combo3决定combo2,抑或因果循环简败?
既然是因果循环,你为什么把他们都加到两个组合框里?
你总体设计有问题。
你应该设一个list来保存所有可选的品种。然后使用两个option来控制给谁挑选。
代码,我写写看。
补充回答:有了,这是一个自定陪搭义函数,检查当前在list1里点的项目是不是已经被选过了,是就返回一个真,没有就返回一个假
在函数头部已经加过说明了!
好了,三个list、一个label、两个option,代码如下:
Dim cc(20)
Private Function 有了() As Boolean'这是一个函数,检查当前在list1里点的项目是不是已经被选过了,是就返回一个真,没有就返回一个假
有了 = False
For i = 0 To List3.ListCount - 1'在list3里找
If List1.Text = List3.List(i) Then
有了 = True
Exit Function
End If
Next i
For i = 0 To List2.ListCount - 1'在list2里找
If List1.Text = List2.List(i) Then
有了 = True
Exit Function
End If
Next i
End Function
Private Sub list1_Click()'这里都是备选的
If 有了 Then Exit Sub'如果这个项目已经选过,就退出
If Option2.Value Then'如果第二个单选被选定
List2.AddItem List1.Text'写入下面
Else
List3.AddItem List1.Text'否则写入上面
End If
End Sub
Private Sub Form_Load()'这部分是初始化
Me.Height = 7000
Me.Width = 4500
Me.Move (Screen.Width - 6000) / 2, (Screen.Height - 7000) / 2
List1.Move 200, 1000, 1300, 5000
Label1 = "可选菜单:"
Label1.FontSize = 14
Label1.Move 200, 500, 1500, 500
Option1.Caption = "上午"
Option1.Move 1800, 2000, 800, 200
Option2.Caption = "下午"
Option2.Move 1800, 4000, 800, 200
Option1.Value = True
List3.Move 2800, 1000, 1300, 2000
List2.Move 2800, 4000, 1300, 2000
cc(0) = "黄瓜"
cc(1) = "南瓜"
cc(2) = "冬瓜"
cc(3) = "白菜"
cc(4) = "萝卜"
cc(5) = "豆角"
cc(6) = "西红柿"
cc(7) = "丝瓜"
cc(8) = "洋葱"
For j = 0 To 8
List1.AddItem cc(j)
Next j
List1.FontSize = 12
End Sub
注意:
1、我没有用星期选项,因为你说了这些代码与星期几没有关系。
2、运行时,选定上下午后,直接点菜单,就可以添加。
3、点击已经添加过的(不论添到上午还是下午的)都无效。
4、你还应补充删除。
1、每天都如此要求,还是只有星期一?
2、combo2决拦乱颤定combo3,还是combo3决定combo2,抑或因果循环简败?
既然是因果循环,你为什么把他们都加到两个组合框里?
你总体设计有问题。
你应该设一个list来保存所有可选的品种。然后使用两个option来控制给谁挑选。
代码,我写写看。
补充回答:有了,这是一个自定陪搭义函数,检查当前在list1里点的项目是不是已经被选过了,是就返回一个真,没有就返回一个假
在函数头部已经加过说明了!
好了,三个list、一个label、两个option,代码如下:
Dim cc(20)
Private Function 有了() As Boolean'这是一个函数,检查当前在list1里点的项目是不是已经被选过了,是就返回一个真,没有就返回一个假
有了 = False
For i = 0 To List3.ListCount - 1'在list3里找
If List1.Text = List3.List(i) Then
有了 = True
Exit Function
End If
Next i
For i = 0 To List2.ListCount - 1'在list2里找
If List1.Text = List2.List(i) Then
有了 = True
Exit Function
End If
Next i
End Function
Private Sub list1_Click()'这里都是备选的
If 有了 Then Exit Sub'如果这个项目已经选过,就退出
If Option2.Value Then'如果第二个单选被选定
List2.AddItem List1.Text'写入下面
Else
List3.AddItem List1.Text'否则写入上面
End If
End Sub
Private Sub Form_Load()'这部分是初始化
Me.Height = 7000
Me.Width = 4500
Me.Move (Screen.Width - 6000) / 2, (Screen.Height - 7000) / 2
List1.Move 200, 1000, 1300, 5000
Label1 = "可选菜单:"
Label1.FontSize = 14
Label1.Move 200, 500, 1500, 500
Option1.Caption = "上午"
Option1.Move 1800, 2000, 800, 200
Option2.Caption = "下午"
Option2.Move 1800, 4000, 800, 200
Option1.Value = True
List3.Move 2800, 1000, 1300, 2000
List2.Move 2800, 4000, 1300, 2000
cc(0) = "黄瓜"
cc(1) = "南瓜"
cc(2) = "冬瓜"
cc(3) = "白菜"
cc(4) = "萝卜"
cc(5) = "豆角"
cc(6) = "西红柿"
cc(7) = "丝瓜"
cc(8) = "洋葱"
For j = 0 To 8
List1.AddItem cc(j)
Next j
List1.FontSize = 12
End Sub
注意:
1、我没有用星期选项,因为你说了这些代码与星期几没有关系。
2、运行时,选定上下午后,直接点菜单,就可以添加。
3、点击已经添加过的(不论添到上午还是下午的)都无效。
4、你还应补充删除。
参考资料: 自己写的
展开全部
试下满足要求不,如果不行我再帮你改。
Private Sub Combo1_Click()
Dim cc(20)
cc(0) = "黄瓜"
cc(1) = "南瓜"
cc(2) = "冬瓜"
cc(3) = "白菜"
cc(4) = "萝卜"让中
cc(5) = "豆角"
cc(6) = "西红柿"
cc(7) = "丝瓜"
cc(8) = "洋葱"
Dim i As Long
Dim cb As Object
Dim n As Long
Dim nz As Object
For i = 2 To 3
Set cb = Me.Controls("combo" & CStr(i))
cb.Clear
For j = 0 To 8
cb.AddItem cc(j)
Next j
Next
End Sub
Private Sub Combo3_click()
a = Combo3.Text
For i = 0 To Combo2.ListCount
If a = Combo2.List(i) Then
Combo2.RemoveItem i
End If
Next i
End Sub
Private Sub Combo2_click()
a = Combo2.Text
For i = 0 To Combo3.ListCount
If a = Combo3.List(i) Then
Combo3.RemoveItem i
End If
Next i
End Sub
Private Sub Form_Load()
Combo1.AddItem "星期一裂掘"
Combo1.AddItem "星期二"
Combo1.AddItem "星坦源山期三"
Combo1.AddItem "星期四"
Combo1.AddItem "星期五"
Combo1.AddItem "星期六"
Combo1.AddItem "星期日"
Combo1.Text = ""
Combo2.Text = ""
Combo3.Text = ""
End Sub
那就用combo1(index)控件来做了。
Private Sub Combo1_Click()
Dim cc(20)
cc(0) = "黄瓜"
cc(1) = "南瓜"
cc(2) = "冬瓜"
cc(3) = "白菜"
cc(4) = "萝卜"让中
cc(5) = "豆角"
cc(6) = "西红柿"
cc(7) = "丝瓜"
cc(8) = "洋葱"
Dim i As Long
Dim cb As Object
Dim n As Long
Dim nz As Object
For i = 2 To 3
Set cb = Me.Controls("combo" & CStr(i))
cb.Clear
For j = 0 To 8
cb.AddItem cc(j)
Next j
Next
End Sub
Private Sub Combo3_click()
a = Combo3.Text
For i = 0 To Combo2.ListCount
If a = Combo2.List(i) Then
Combo2.RemoveItem i
End If
Next i
End Sub
Private Sub Combo2_click()
a = Combo2.Text
For i = 0 To Combo3.ListCount
If a = Combo3.List(i) Then
Combo3.RemoveItem i
End If
Next i
End Sub
Private Sub Form_Load()
Combo1.AddItem "星期一裂掘"
Combo1.AddItem "星期二"
Combo1.AddItem "星坦源山期三"
Combo1.AddItem "星期四"
Combo1.AddItem "星期五"
Combo1.AddItem "星期六"
Combo1.AddItem "星期日"
Combo1.Text = ""
Combo2.Text = ""
Combo3.Text = ""
End Sub
那就用combo1(index)控件来做了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询